
一、部署kubelet
按照如下图部署:

1、配置kubelet命令工具
[root@k8s-master ~]# tar -zxvfkubernetes-node-linux-amd64.tar.gz -C /usr/src/[root@k8s-master ~]# cd /usr/src/kubernetes/node/bin[root@k8s-master bin]# cp kubelet kubectlkube-proxy /usr/local/kubernetes/bin/
2、创建 kubeletbootstrap.kubeconfig 文件
(1)创建kubeletbootstrap.kubeconfig脚本
[root@k8s-master ~]# vim /usr/local/kubernetes/conf/environment.sh添加:# 创建kubelet bootstrapping kubeconfigBOOTSTRAP_TOKEN=a6cccdfca47a9766da8db559b81fb6c4KUBE_APISERVER="https://192.168.1.3:6443"# 设置集群参数kubectl config set-cluster kubernetes \--certificate-authority=/usr/local/kubernetes/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=/usr/local/kubernetes/conf/bootstrap.kubeconfig# 设置客户端认证参数kubectl config set-credentials kubelet-bootstrap \--token=${BOOTSTRAP_TOKEN} \--kubeconfig=/usr/local/kubernetes/conf/bootstrap.kubeconfig# 设置上下文参数kubectl config set-context default \--cluster=kubernetes \--user=kubelet-bootstrap \--kubeconfig=/usr/local/kubernetes/conf/bootstrap.kubeconfig# 设置默认上下文kubectl config use-context default \--kubeconfig=/usr/local/kubernetes/conf/bootstrap.kubeconfig
(2)执行脚本environment.sh创建bootstrap.kubeconfig文件
[root@k8s-master ~]# chmod +x/usr/local/kubernetes/conf/environment.sh[root@k8s-master ~]# /usr/local/kubernetes/conf/environment.sh

[root@k8s-master ~]# ls/usr/local/kubernetes/conf/bootstrap.kubeconfig
(3)分发bootstrap.kubeconfig文件
[root@k8s-master ~]# scp /usr/local/kubernetes/conf/bootstrap.kubeconfig192.168.1.1:/usr/local/kubernetes/conf/[root@k8s-master ~]# scp /usr/local/kubernetes/conf/bootstrap.kubeconfig192.168.1.2:/usr/local/kubernetes/conf/
3、创建 kubelet.kubeconfig 文件
(1)创建脚本
[root@k8s-master ~]# vim/usr/local/kubernetes/conf/envkubelet.kubeconfig.sh添加:# 创建kubelet kubeconfigBOOTSTRAP_TOKEN=a6cccdfca47a9766da8db559b81fb6c4KUBE_APISERVER="https://192.168.1.3:6443"# 设置集群参数kubectl config set-cluster kubernetes \--certificate-authority=/usr/local/kubernetes/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=/usr/local/kubernetes/conf/kubelet.kubeconfig# 设置客户端认证参数kubectl config set-credentials kubelet \--token=${BOOTSTRAP_TOKEN} \--kubeconfig=/usr/local/kubernetes/conf/kubelet.kubeconfig# 设置上下文参数kubectl config set-context default \--cluster=kubernetes \--user=kubelet \--kubeconfig=/usr/local/kubernetes/conf/kubelet.kubeconfig# 设置默认上下文kubectl config use-context default \--kubeconfig=/usr/local/kubernetes/conf/kubelet.kubeconfig
(2)执行envkubelet.kubeconfig.sh脚本创建kubelet.kubeconfig文件
[root@k8s-master ~]# chmod +x /usr/local/kubernetes/conf/envkubelet.kubeconfig.sh[root@k8s-master ~]#/usr/local/kubernetes/conf/envkubelet.kubeconfig.sh

[root@k8s-master ~]# ls/usr/local/kubernetes/conf/kubelet.kubeconfig
(3)分发kubelet.kubeconfig文件
[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet.kubeconfig 192.168.1.1:/usr/local/kubernetes/conf/[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet.kubeconfig 192.168.1.2:/usr/local/kubernetes/conf/
4、创建 kubelet.config文件
[root@k8s-master ~]# vim /usr/local/kubernetes/conf/kubelet.config添加:kind: KubeletConfigurationapiVersion: kubelet.config.k8s.io/v1beta1address: 192.168.1.3 ###改为本机ip地址port: 10250readOnlyPort: 10255cgroupDriver: cgroupfsclusterDNS: ["10.0.0.10"]clusterDomain: cluster.local.failSwapOn: falseauthentication:anonymous:enabled:true[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet.config192.168.1.1:/usr/local/kubernetes/conf/[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet.config192.168.1.2:/usr/local/kubernetes/conf/
5、拉去pause镜像
[root@k8s-master ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
6、创建kubelet文件
[root@k8s-master ~]# vim /usr/local/kubernetes/conf/kubelet添加:KUBELET_OPTS="--logtostderr=true \--v=4 \--hostname-override=k8s-master \--kubeconfig=/usr/local/kubernetes/conf/kubelet.kubeconfig \--bootstrap-kubeconfig=/usr/local/kubernetes/conf/bootstrap.kubeconfig \--config=/usr/local/kubernetes/conf/kubelet.config \--cert-dir=/usr/local/kubernetes/ssl/ \--cluster-dns=10.0.0.10 \--cluster-domain=cluster.local \--client-ca-file=/usr/local/kubernetes/ssl/ca.pem \--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1"注意:如果启用CNI则添加如下配置:--network-plugin=cni--cni-conf-dir=/etc/cni/net.d--cni-bin-dir=/opt/cni/bin[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet 192.168.1.1:/usr/local/kubernetes/conf/[root@k8s-master ~]# scp /usr/local/kubernetes/conf/kubelet 192.168.1.2:/usr/local/kubernetes/conf/
7、配置kubelet服务
[root@k8s-node-1 ~]# vim /usr/lib/systemd/system/kubelet.service添加:[Unit]Description=Kubernetes KubeletAfter=docker.serviceRequires=docker.service[Service]EnvironmentFile=-/usr/local/kubernetes/conf/kubeletExecStart=/usr/local/kubernetes/bin/kubelet$KUBELET_OPTSRestart=on-failureKillMode=process[Install]WantedBy=multi-user.target[root@k8s-master ~]# scp /usr/lib/systemd/system/kubelet.service 192.168.1.1:/usr/lib/systemd/system/[root@k8s-master ~]# scp /usr/lib/systemd/system/kubelet.service 192.168.1.2:/usr/lib/systemd/system/
8、将kubelet-bootstrap用户绑定到系统集群角色
在master服务器中将kubelet-bootstrap用户绑定到系统集群角色中,否则kubelet启动可能会报错。
[root@k8s-master~]# kubectl create clusterrolebindingkubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
9、启动kubelet服务
[root@k8s-master ~]# systemctl enable kubelet.service[root@k8s-master ~]# systemctl start kubelet.service[root@k8s-master ~]# systemctl status kubelet.service

[root@k8s-master ~]# netstat -anpt | grep kubelet

二、讲Node节点添加到群集中
注意:下列操作在master服务器中完成!
1、将kubelet-bootstrap用户绑定到系统集群角色
在master服务器中将kubelet-bootstrap用户绑定到系统集群角色中
[root@k8s-master ~]# kubectl create clusterrolebindingkubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
2、在Master节点查看请求签名的Node
[root@k8s-master ~]# kubectl get csr

3、在Master节点批准签名(将node节点服务器加入群集中)
[root@k8s-master ~]# kubectl certificate approvenode-csr-4f1CiCedNim94v0u8dMrj0YKw79wrU8BzEl5oDKKINY[root@k8s-master ~]# kubectl certificate approvenode-csr-HU6O86iGyvB_L45oQMEQPS-4EdMA_8Rkjv2GqQurIjM[root@k8s-master ~]# kubectl certificate approvenode-csr-XGnfhQvE0b1dnOlHKrzHTRqi9YGA4ZetwmG64_vKi0g

4、查看node节点的签名状态
[root@k8s-master ~]# kubectl get nodes

注意:如下图所示NotReady。

原因是:
1、网络未配置,部署Flannel网络后,回复正常。
2、网络设置存在问题,检查网络配置是否正确。

文章转载自dodo在线,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




