admin管理员组文章数量:1635315
1、安装前注意事项
安装shell脚本在文章最后位置
1、提前配置静态IP 把脚本的IP 192.168.1.31 换成你的IP
2、创建安装包路径 /home/software/shell 所有的tar包 shell脚本 放在这里
3、免密登录配置所有节点
提前下载镜像如下:
[root@master01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
calico/node v3.15.1 1470783b1474 2 years ago 262MB
calico/pod2daemon-flexvol v3.15.1 a696ebcb2ac7 2 years ago 112MB
calico/cni v3.15.1 2858353c1d25 2 years ago 217MB
calico/kube-controllers v3.15.1 8ed9dbffe350 2 years ago 53.1MB
kubernetesui/dashboard v2.0.0 8b32422733b3 3 years ago 222MB
kubernetesui/metrics-scraper v1.0.4 86262685d9ab 3 years ago 36.9MB
lizhenliang/coredns 1.6.7 67da37a9a360 3 years ago 43.8MB
busybox 1.28.4 8c811b4aec35 4 years ago 1.15MB
lizhenliang/pause-amd64 3.0 99e59f495ffa 6 years ago 747kB
软件安装包需下载如下:
1)下载etcd二进制文件
地址:https://github/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz
2) 下载 Docker二进制文件
这里使用Docker作为容器引擎,也可以换成别的,例如containerd
下载地址:https://download.docker/linux/static/stable/x86_64/docker-19.03.9.tgz
3) 下载 kuberneteser二进制文件
下载地址:https://github/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md
注:打开链接你会发现里面有很多包,下载一个server包就够了,包含了Master和Worker Node二进制文件
执行前提醒
注意:install_k8s_base.sh中的文件hosts字段中IP为所有Master/LB/VIP
IP,一个都不能少!为了方便后期扩容可以多写几个预留的IP
这么有几个IP 就可以后期增加几个node节点!! 我这里可以有4个节点。
ETCD 默认安装单节点,可以修改配置增加节点,需要每个节点都按照 不然无法启动ETCD集群!!
2、开启安装步骤:
最可能出现的异常问题都是证书和网络相关的,这也是K8S最核心最难的部分,参考官方文档、执行日志、组件的版本兼容性、配置参数、系统参数等分析
依次执行如下脚本:
sh pre_env.sh
sh install_docker.sh
sh install_etcd.sh
sh install_k8s_base.sh
sh install_net_plugin.sh
sh install_coredns_board.sh
/home/software/shell/board_token 文件里是dashboad的token信息 获取后访问即可
如果需要卸载网络插件 执行
sh clear_net_plugin.sh
静态IP 也可以修改static_ip_config.sh 里面的IP信息 后执行
sh static_ip_config.sh
3、 最终效果
Node节点情况
Pod情况
内存使用情况:
我是16GRAM 最终部署K8S初始状态后,内存占如下:
我是增加了一个node节点后的
4、常见问题
问题1:没有给apiserver授权访问kubelet组件
确认:ClusterRole 有没有 增加 - pods/log 的查询权限
cat > apiserver-to-kubelet-rbac.yaml << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: system:kube-apiserver-to-kubelet
rules:
- apiGroups:
- ""
resources:
- nodes/proxy
- nodes/stats
- nodes/log
- nodes/spec
- nodes/metrics
- pods/log
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: system:kube-apiserver
namespace: ""
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:kube-apiserver-to-kubelet
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: kubernetes
EOF
kubectl apply -f apiserver-to-kubelet-rbac.yaml
5、Shell 部署脚本
pre_env.sh
#/bin/bash
# 1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
echo "关闭防火墙!"
# 2、关闭selinux
setenforce 0 # 临时
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
echo "关闭selinux !"
# 3、关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
echo "关闭swap !"
# 4、根据规划设置主机名
hostnamectl set-hostname master01
# 5、在master添加hosts
cat >> /etc/hosts << EOF
192.168.1.31 master01
192.168.1.32 master02
192.168.1.33 node01
192.168.1.34 node02
EOF
echo "在master添加hosts !"
# 6、将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 7、时间同步
yum install ntpdate -y
ntpdate time.windows.com
install_docker.sh
#/bin/bash
# 1.解压二进制软件包
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin
echo "解压success !"
# 2.systemd管理docker
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 3.创建配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs"]
}
EOF
# 4.启动并设置开机启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
docker version
install_etcd.sh
#/bin/bash
##下载证书cfssl
#mkdir cfssl && cd cfssl/
cd /home/software/shell
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv -f cfssl_linux-amd64 /usr/local/bin/cfssl
mv -f cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv -f cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
#生成Etcd证书
#1 自签证书颁发机构(CA)
# 1、创建工作目录
mkdir -p ~/TLS/{
etcd,k8s} && cd ~/TLS/etcd
# 2、自签CA
cat > ca-config.json << EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
版权声明:本文标题:K8S二进制单节点 一键部署K8S_V1.21.x 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729203494a1189822.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论