重要
k8s
和docker
的版本必须兼容,否则会安装失败 本次使用的k8s-1.19.16
,docker-19.03.9
至少使用两台服务器,你也可以使用虚拟机 注:本文档使用的服务器都是 linux/centos7
如果机器上有其他版本的docker或者k8s,请全部卸载干净
如有任何操作没有达到预期的效果,你进行网络搜索
安装docker19.03.9
两台服务器都需要安装docker
1 2 3 yum install docker-ce-19.03.9-3.el7 -y systemctl enable docker systemctl start docker
1 2 # 打开文件 vim /etc/docker/daemon.json
输入如下内容
1 2 3 4 { "registry-mirrors" : ["https://b9pmyelo.mirror.aliyuncs.com" ], "exec-opts" :["native.cgroupdriver=systemd" ] }
1 2 # 重启docker systemctl restart docker
安装k8s1.19.16
两台服务器都需要安装k8s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 # 跟着步骤依次复制粘贴运行 # 两台服务器都要执行 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF setenforce 0 yum install -y kubelet-1.19.16 kubeadm-1.19.16 kubectl-1.19.16 --disableexcludes=kubernetes systemctl enable kubelet && systemctl start kubelet cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system sudo systemctl stop firewalld sudo systemctl disable firewalld sudo swapoff -a systemctl daemon-reload systemctl restart kubelet systemctl enable docker.service systemctl enable kubelet.service echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile source /etc/profile
master服务器初始化kubeadm
1 2 3 4 5 6 7 8 kubeadm init \ --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ --kubernetes-version v1.19.16 \ --ignore-preflight-errors=Swap \ # pod网段 --pod-network-cidr 200.100.0.0/16 \ # 当前master服务器的ip --apiserver-advertise-address 192.168.1.100
经过一段时间后,初始化完毕,终端显示如下内容,请务必保存好
1 2 3 # 务必保存好,在worker节点运行 kubeadm join 192.168.1.100:6443 --token 02fbxd.3w8re5u8avpbnw5z \ --discovery-token-ca-cert-hash sha256:44b8880409e4e09c395a69599049320c90425700c60f3f219c779d7e8182a5bd
继续查看服务启动情况,确保启动完毕
1 2 3 mkdir -p $HOME /.kube sudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config sudo chown $(id -u):$(id -g) $HOME /.kube/config
检查pod
1 kubectl get pod --all-namespaces
直到全部running
master服务器安装网络插件 1 kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n') "
检查pod
1 kubectl get pod --all-namespaces
直到全部running
添加worker节点
请确认worker节点已经安装好docker和k8s了
1 2 kubeadm join 192.168.1.100:6443 --token 02fbxd.3w8re5u8avpbnw5z \ --discovery-token-ca-cert-hash sha256:44b8880409e4e09c395a69599049320c90425700c60f3f219c779d7e8182a5bd
添加成功后
回到master节点 1 2 # 查看node kubectl get nodes
请确保全部Ready,如果没有,请网络搜索
总结
至此,k8s安装部署完成,k8s之路才刚刚开始
我们将使用kubectl
命令做很多事情,请接下来熟悉kubectl
的使用方法
最终成功后,在master节点,可以看到如下打印示例
1 2 3 4 5 [root@k8s-master ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 25m v1.19.16 k8s-node1 Ready <none> 11m v1.19.16 [root@k8s-master ~]$