暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

《蹲坑学kubernetes》之10-2:安装部署kubelet

dodo在线 2020-05-12
372


一、部署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 kubeconfig
BOOTSTRAP_TOKEN=a6cccdfca47a9766da8db559b81fb6c4
KUBE_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 kubeconfig
BOOTSTRAP_TOKEN=a6cccdfca47a9766da8db559b81fb6c4
KUBE_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: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 192.168.1.3 ###改为本机ip地址
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS: ["10.0.0.10"]
clusterDomain: cluster.local.
failSwapOn: false
authentication:
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 Kubelet
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=-/usr/local/kubernetes/conf/kubelet
ExecStart=/usr/local/kubernetes/bin/kubelet$KUBELET_OPTS
Restart=on-failure
KillMode=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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论