本部署主要参照 https://www.kubernetes.org.cn/7189.html 的步骤,其中有几个地方可能因为版本不一样,会有一些问题。
1. 在其中第5步,初始化k8s集群时,有一个 image (coredns:V1.8.0)拉取不到, 可以通过下面的命令,先从 docker 拉取,然后 tag 成 registry.aliyuncs.com/google_containers/coredns:v1.8.0
docker pull coredns/coredns:1.8.0 docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0
初始化的时候,改了一下版本
kubeadm init --kubernetes-version=1.21.1 --apiserver-advertise-address=192.168.137.91 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
2. 查看状态时,发现 scheduler 和 controller-manager 不是健康状态。
在网上搜了一下,出现这种情况,是/etc/kubernetes/manifests/下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0导致的,解决方式是注释掉对应的port即可,
把这两个文件中的 port=0 的行注释掉后。等一会,这两个就正常了
上面是部署 kubernetes 的 master, 下面创建 worker, 步骤只需要做上面的链接文章中的前 4 步。然后运行下面的命令,加入集群
kubeadm join 192.168.137.91:6443 --token ej6bg8.9ol2o5s77d3dd290 --discovery-token-ca-cert-hash sha256:4446f1e99cf9ca4ec466d4872cbf915379a69e0ba907686df414968f65f5a00a
上面的命令,其实是在前面 master 初始化完成后,最后打印出来的。
如果找不到了,可以运行下面的命令
kubeadm token create --print-join-command
一开始是 NotReady,过一会就 Ready了。不过 增加的 节点的 Role 为 <none>,通过下面的命令可以设置
kubectl label nodes k8s02 node-role.kubernetes.io/node=