Centos7二进制部署k8s(四)Node组件

2019年10月14日17:25:05 发表评论 1,265 views
广告也精彩

Centos7二进制部署k8s(四)Node组件

一、部署Node组件

1.将kubelet-bootstrap用户绑定到系统集群角色(Master上执行)

#为token.csv赋予权限

kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap

Centos7二进制部署k8s(四)Node组件

2.创建kubeconfig文件(Master上执行)

##sh kubeconfig.sh APISERVER  证书目录  

rz #上传脚本,修改BOOTSTRAP_TOKEN这个位置填写生成token.csv时的那段随机字符

sh kubeconfig.sh 192.168.31.63  /root/k8s/k8s-cert/

Centos7二进制部署k8s(四)Node组件

###会生成 bootstrap.kubeconfig 、kube-proxy.kubeconfig 后 拷贝到node###

#拷贝到node1:
scp bootstrap.kubeconfig  kube-proxy.kubeconfig  root@192.168.31.65:/opt/kubernetes/cfg/
#拷贝到node2:
scp bootstrap.kubeconfig  kube-proxy.kubeconfig  root@192.168.31.66:/opt/kubernetes/cfg/

# 找到刚才上传的kubernetes-server-linux-amd64.tar.gz中,我的在下面目录
cd  /root/k8s/k8s-cert/kubernetes/server/bin

##节点kubelet  kube-proxy 也拷贝过去()
scp kubelet kube-proxy  root@192.168.31.65:/opt/kubernetes/bin/
#拷贝到node2:
##节点kubelet  kube-proxy 也拷贝过去(在kubernetes-server-linux-amd64.tar.gz中)
scp kubelet kube-proxy  root@192.168.31.66:/opt/kubernetes/bin/

二、部署 Kubelet、proxy组件

3.部署kubelet,kube-proxy组件(192.168.31.65 Node上执行 加入master)

脚本已上传到QQ群共享:(kubelet.sh  proxy.sh)

chmod +x kubelet.sh proxy.sh
sh kubelet.sh 192.168.31.65
sh proxy.sh 192.168.31.65

4.master节点执行命令批准证书

kubectl get csr      #查看申请节点

kubectl certificate approve node-csr-FLaxv4tLHKcLTga2hIYytnzQ40Uqqu9KoFGhVFk3KU8   #添加节点

kubectl get node   #查看节点,node2同理上面操作
NAME            STATUS     ROLES    AGE   VERSION
192.168.31.65   NotReady   <none>   3s    v1.13.4

Centos7二进制部署k8s(四)Node组件

kubectl get csr 显示No Resources Found的解决记录

5,node节点验证

在node节点ssl目录可以看到,多了4个kubelet的证书文件
ll /opt/kubernetes/ssl


#########默认日志保存在/var/log/meesgess下,如需要自定义如下:
$vim  /opt/kubernetes/cfg/kubelet
$vim /opt/kubernetes/cfg/kube-proxy

$mkdir -p /opt/kubernetes/logs

KUBELET_OPTS="--logtostderr=true \  改为
KUBELET_OPTS="--logtostderr=false  \
--log-dir=/opt/kubernetes/logs \

6,Node2部署方式一样。

  • 加入master,不需要从新生成token。

  • Master 查看集群状态

[root@k8s-master bin]# kubectl get node
NAME            STATUS   ROLES    AGE     VERSION
192.168.31.65   Ready    <none>   33m     v1.13.4
192.168.31.66   Ready    <none>   6m34s   v1.13.4
[root@k8s-master bin]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-2               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"} 

Centos7二进制部署k8s(四)Node组件

node 重新加入集群需删除 kubelet.kubeconfig与ssl证书

三、测试K8S集群

7,运行一个测试示例

[root@k8s-master bin]# kubectl run nginx --image=nginx --replicas=3

[root@k8s-master bin]# kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort

查看Pod,Service状态:

[root@k8s-master bin]# kubectl get pods
NAME                     READY   STATUS             RESTARTS   AGE
nginx-7cdbd8cdc9-cfmdq   0/1     ImagePullBackOff   0          3m10s
nginx-7cdbd8cdc9-lgd8l   1/1     Running            0          3m9s
nginx-7cdbd8cdc9-wt5s2   1/1     Running            0          3m10s
[root@k8s-master bin]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP        5h5m
nginx        NodePort    10.0.0.143   <none>        88:39500/TCP   2m20s
# 88是内部访问端口
# 39500是外部访问端口

Centos7二进制部署k8s(四)Node组件

授权:不然无法exec 登录容器,查看容器日志等问题。

kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

手工启动

/opt/kubernetes/bin/kubelet --logtostderr=false --log-dir=/opt/kubernetes/logs --v=4 --hostname-override=192.168.1.246 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig --config=/opt/kubernetes/cfg/kubelet.config --cert-dir=/opt/kubernetes/ssl --pod-infra-container-image=docker.io/kubernetes/pause:latest

四、 删除K8S 节点从新加入Master

###  Master执行 ###
kubectl delete nodes  192.168.31.66


###  Node 执行 ###
systemctl stop kubelet kube-proxy

#ssl证书
rm -fr /opt/kubernetes/ssl/*

#重新生成证书加入并启动
sh kubelet.sh 192.168.1.246
sh proxy.sh 192.168.1.246


#许可加入master 
$kubectl get csr

$kubectl certificate approve node-csr-NK3xFo5gaa3-k6gLyytKmUW2sUHZxnouyD9Kn2arJmk

至此K8s二进制部署完成。

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: