查看进程文件
# ps -ef |grep kube-controller-manager root 79191 1 10 09:35 ? 00:00:01 /data/soft/kubernetes/bin/kube-controller-manager --logtostderr=true --v=4 --master=127.0.0.1:8080 --leader-elect=true --address=127.0.0.1 --service-cluster-ip-range=10.0.0.0/24 --cluster-name=kubernetes --cluster-signing-cert-file=http://www.likecs.com/data/soft/kubernetes/ssl/ca.pem --cluster-signing-key-file=http://www.likecs.com/data/soft/kubernetes/ssl/ca-key.pem --root-ca-file=http://www.likecs.com/data/soft/kubernetes/ssl/ca.pem --service-account-**private**-key-file=http://www.likecs.com/data/soft/kubernetes/ssl/ca-key.pem root 79220 1305 0 09:35 pts/0 00:00:00 grep --color=**auto** kube-controller-manager将可执行文件路/data/soft/kubernetes/ 添加到 PATH 变量中
vim /etc/profile PATH=http://www.likecs.com/data/soft/kubernetes/bin:$PATH:$HOME/bin source /etc/profile 查看master集群状态所有组件都已经启动成功,通过kubectl工具查看当前集群组件状态:
# kubectl get cs,nodes NAME STATUS MESSAGE ERROR componentstatus/scheduler Healthy ok componentstatus/etcd-2 Healthy {"health":"true"} componentstatus/etcd-1 Healthy {"health":"true"} componentstatus/etcd-0 Healthy {"health":"true"} componentstatus/controller-manager Healthy ok 部署node 节点kubernetes work 节点运行如下组件:
docker 前面已经部署
kubelet
kube-proxy
部署 kubelet 组件kublet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如exec、run、logs 等;
kublet 启动时自动向 kube-apiserver 注册节点信息,内置的 cadvisor 统计和监控节点的资源使用情况;
为确保安全,本文档只开启接收 https 请求的安全端口,对请求进行认证和授权,拒绝未授权的访问(如apiserver、heapster)。
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情,因此有了TLS Bootstrapping机制,kubelet会以一个低权限用户自动向apiserver申请证书,kubelet的证书由apiserver动态签署。
认证大致工作流程如图所示:
ip 操作系统 角色 安装软件 主机名192.168.0.10 centos7.6_x64 master1 docker,etcd 8bettest518
192.168.0.7 centos7.6_x64 node1 docker 8bettest520
192.168.0.8 centos7.6_x64 node2 docker 8bettest521
node节点安装好docker
yum-config-manager --add-repo yum list docker-ce --showduplicates | soft -r yum install docker-ce -y systemctl start docker && systemctl enable docker配置docker加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s \ && systemctl restart docker 将kubelet 二进制文件拷贝node节点 cd /data/upload/kubernetes/server/bin [root@localhost bin]# pwd /data/upload/kubernetes/server/bin \cp kubelet kube-proxy /data/soft/kubernetes/bin/ scp -P 12525 -r kubelet kube-proxy www@192.168.0.7:/data/soft/kubernetes/bin/ scp -P 12525 -r kubelet kube-proxy www@192.168.0.8:/data/soft/kubernetes/bin/创建 kubelet bootstrap kubeconfig 文件
在生成kubernetes证书的目录下执行以下命令生成kubeconfig文件:
创建 脚本快速执行文件时,需要进入/data/soft/kubernetes/ssl/目录中去执行
cd /data/soft/kubernetes/ssl/ vim environment.sh # 创建 kubelet bootstrapping kubeconfig BOOTSTRAP_TOKEN=2366a641f656a0a025abb4aabda4511b KUBE_APISERVER="https://192.168.0.10:6443" # kuber-apiserver启动参数中的token.csv和kubelet启动参数中指定的bootstrap文件bootstrap.kubeconfig中的token值是否一致,此外该token必须为实际数值,不能使用变量代替 # 设置集群参数 kubectl config set-cluster kubernetes \ --certificate-authority=./ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=bootstrap.kubeconfig # 设置客户端认证参数 kubectl config set-credentials kubelet-bootstrap \ --token=${BOOTSTRAP_TOKEN} \ --kubeconfig=bootstrap.kubeconfig # 设置上下文参数 kubectl config set-context default \ --cluster=kubernetes \ --user=kubelet-bootstrap \ --kubeconfig=bootstrap.kubeconfig # 设置默认上下文 kubectl config use-context default --kubeconfig=bootstrap.kubeconfig #---------------------- # 创建kube-proxy kubeconfig文件 kubectl config set-cluster kubernetes \ --certificate-authority=./ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=kube-proxy.kubeconfig kubectl config set-credentials kube-proxy \ --client-certificate=./kube-proxy.pem \ --client-key=./kube-proxy-key.pem \ --embed-certs=true \ --kubeconfig=kube-proxy.kubeconfig kubectl config set-context default \ --cluster=kubernetes \ --user=kube-proxy \ --kubeconfig=kube-proxy.kubeconfig kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig执行该脚本
bash environment.sh