1、虚拟机准备
vmware下安装三台centos7虚拟机,三台机器的配置后面作如下配置
ip地址 | hostname | 内存 | cpu个数 | |
master | 192.168.126.131 | master | 2G | 2 |
node1 | 192.168.126.132 | node1 | 2G | 2 |
node2 | 192.168.126.133 | node2 | 2G | 2 |
2、网络与参数配置
- 配置ip(所有节点)
- 切换到root用户 su root
- 打开ens33配置网络 vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 将ONBOOT=NO设置为yes,启动网卡
- 重启网络服务 sudo service network restart
- 测试是否能够上网 ping www.baidu.com
- 配置hostname(挨个节点配置)
- 每个节点设置主机名
- hostnamectl set-hostname master
- hostnamectl set-hostname node1
- hostnamectl set-hostname node2
- 节点修改host(所有节点)
- vim /etc/hosts
- 192.168.126.131 master
- 192.168.126.132 node1
- 192.168.126.133 node2
- 关闭分区交换(所有节点)
- 不关闭的话在启动初始化kubeadm时可能出现错误信息如下
-
The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 【::1】:10248: connect: connection refused.
- swapoff -a
- 关闭 SELinux(所有节点)
- setenforce 0
-
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- 关闭防火墙(所有节点)
- systemctl stop firewalld
- systemctl disable firewalld
3、准备安装源与安装过程
- 添加k8s安装源(所有节点)
-
cat <<EOF > kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF mv kubernetes.repo /etc/yum.repos.d/
- 注意 :这里的gpgcheck=0 repo_gpgcheck=0设置为0而不是1,否则出现gpg 证书的验证错误!!
-
- 添加Docker安装源(所有节点)
-
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
- 安装所需组件(所有节点)
-
yum install -y kubelet kubeadm kubectl docker-ce
-
- 启动 kubelet、docker,并设置开机启动(所有节点)
- systemctl enable kubelet
- systemctl start kubelet
- systemctl enable docker
- systemctl start docker
- 修改Docker配置(所有节点)
-
# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了 cat <<EOF > daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"] } EOF mv daemon.json /etc/docker/ # 重启生效 systemctl daemon-reload systemctl restart docker
-
- 用 kubeadm 初始化集群(仅在主节点跑)
-
注意:要保存下来kubeadm join指令,即将工作节点node加入到master k8s集群# 初始化集群控制台 Control plane # 失败了可以用 kubeadm reset 重置 kubeadm init --image-repository=registry.aliyuncs.com/google_containers #也可以用如下初始化指令,消除预检(因为预检有可能出现错误) kubeadm init --image-repository=registry.aliyuncs.com/google_containers --ignore-preflight-errors=all # 记得把 kubeadm join xxx 保存起来 # 忘记了重新获取:kubeadm token create --print-join-command # 复制授权文件,以便 kubectl 可以有权限访问集群 # 如果你其他节点需要访问集群,需要从主节点复制这个文件过去其他节点 mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config # 在其他机器上创建 ~/.kube/config 文件也能通过 kubectl 访问到集群
-
- 把工作节点加入到集群(在非主节点上执行)
-
kubeadm join 192.168.126.131:6443 --token tjirc3.n0ranigtf1t54qy2 --discovery-token-ca-cert-hash sha256:c6e1b1259a26fe4dfa2da9bd1b22ef288598d7fdab03b963e11203ddb75e5c69
-
- 安装网络插件,否则 node 是 NotReady 状态(主节点跑)
-
# 很有可能国内网络访问不到这个资源,你可以网上找找国内的源安装 flannel kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
- k8s集群搭建成功
注意:等到master主节点和两个node工作节点都为ready状态,表示整个集群启动成功!
-
参考如下:
centos7.1使用kubeadm部署kubernetes 1.16.2的master高可用 - 清风小舍 - 博客园