您的位置:首页 > 其它

【k8s学习笔记】第四篇:向集群添加子节点

2018-12-26 08:56 561 查看

【k8s学习笔记】第四篇:向集群添加子节点

在这一篇中,我们向Cluster中添加子节点。
根据初始化集群时的系统提示,在添加子节点之前,还需要做一些操作,为master用户配置kubectl,root用户在执行一些命令时可能会有问题。
1、执行下面的命令为master用户授权:
su - master
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown (id−u):(id -u):(id−u):(id -g) $HOME/.kube/config
上面的命令如果不执行,在执行命令:
kubectl get nodes
查看集群节点信息的时候会报如下错误:

2、启用kubectl命令自动补全功能:
echo “source <(kubectl completion bash)” >> ~/.bashrc

3、安装pod网络,用于Cluster节点之间的通信:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4、以上,master节点已经准备完毕。按照之前的步骤,我们在node1节点上安装kubelet,kubeadm和kubectl。

5、向Cluster中添加子节点需要获取Cluster的token,这里注意:token默认的有效期为24小时,过了有效期后通过kubeadm token list命令无法查询出token值,无法加入新的节点。
可以通过:
kubeadm token list
命令可以查询集群的token。如果token已经过期,可以通过:
kubeadm token create
命令生成新的token。

通过:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’
命令可以获取获取ca证书sha256编码hash值。

6、在node1节点上执行下面的命令向我们之前建立的集群中添加节点:
kubeadm join 192.168.189.129:6443 --token 97ye7g.fqbe8gnvfgjvywa8 --discovery-token-ca-cert-hash sha256:5de13be12daf8b231f59c2c93671d6091d195055fcd184963e66f49a4921e835

7、向Cluster添加子节点后,确保节点状态正确,通过查询状态信息解决对应的问题。
添加完成后,在master节点通过命令:
kubectl get nodes
查看各Node的状态。

可以看到子节点的状态为NotReady,因为Pod运行所需的组件镜像需要下载和启动。
通过命令:
kubectl get pod --all-namespaces
查看Pod的状态。

状态不为Running的都有问题。
通过命令:
kubectl describe pod XXX --namespace=XXX
查看单个项目的具体情况。

通过具体报错,在子节点上面必须下载安装下面几个镜像:
k8s.gcr.io/kube-proxy:v1.12.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2
具体执行的命令如下:
下载镜像:
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.13.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.2.24
docker pull coredns/coredns:1.2.6
修改tag:
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.13.0 k8s.gcr.io/kube-proxy:v1.13.0
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
删除镜像:
docker rmi docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.13.0
docker rmi docker.io/mirrorgooglecontainers/pause:3.1
docker rmi docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24
docker rmi docker.io/coredns/coredns:1.2.6

安装完毕后,重新启动master,查看node和pod的状态,需要多等一会儿,终于启动成功:

可以通过命令:
kubectl get pods --all-namespace -o wide
来查看集群中正在运行的pod。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: