kubernetes——部署apiserver、scheduler、controller-manage、kubelet、proxy
一、部署master组件
1、生成api-server证书
#将master.zip移到master1的目录下
[root@master1 ~]# unzip master.zip #进行解压
#会解压出apiserver.sh 、controller-manager.sh、scheduler.sh三个脚本
#在/opt目录下创建一个k8s的目录,已经配置、命令、证书的目录
[root@master1 ~]# mkdir /opt/kubernetes/{cfg,bin,ssl} -p
#在/k8s目录下创建k8s-cert目录
[root@master1 k8s]# mkdir k8s-cert
[root@master1 k8s]# cd k8s-cert/
#将k8s-cert.sh的脚本放进去,并修改脚本的五个IP
cat > server-csr.json <<EOF
{
“CN”: “kubernetes”,
“hosts”: [
“10.0.0.1”,
“127.0.0.1”,
“192.168.200.11”, //master1
“192.168.200.14”, //master2
“192.168.200.15”, //(master)
“192.168.200.16”, //(backup)
“192.168.200.100”, // VIP
“kubernetes”,
“kubernetes.default”,
“kubernetes.default.svc”,
“kubernetes.default.svc.cluster”,
“kubernetes.default.svc.cluster.local”
],
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“names”: [
{
“C”: “CN”,
“L”: “BeiJing”,
“ST”: “BeiJing”,
“O”: “k8s”,
“OU”: “System”
}
]
}
EOF
[root@master1 k8s-cert]# bash k8s-cert.sh #运行脚本生成证书
[root@master1 k8s-cert]# ls *.pem #查看证书,会生成8个证书
admin-key.pem admin.pem ca-key.pem ca.pem kube-proxy-key.pem kube-proxy.pem server-key.pem server.pem#将ca证书和server证书移到/ssl下面
[root@master1 k8s-cert]# cp capem serverpem /opt/kubernetes/ssl/
2、解压kubernetes压缩包
#将kubernetes放到/k8s目录下
[root@master1 k8s]# tar zxvf kubernetes-server-linux-amd64.tar.gz
[root@master1 kubernetes]# cd /root/k8s/kubernetes/server/bin
#将kube-apiserver、kube-scheduler、kubectl、kube-controller-manager移到/opt/kubernetes/bin/下
[root@master1 bin]# cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
3、创建随机序列号
[root@master1 bin]# head -c 16 /dev/urandom | od -An -t x | tr -d ’ ’
4f82e5d0493ea31ed221e22b913e3d6c
#将序列号放进/opt/kubernetes/cfg/token.csv中
[root@master1 bin]# vim /opt/kubernetes/cfg/token.csv
4f82e5d0493ea31ed221e22b913e3d6c,kubelet-bootstrap,10001,“system:kubelet-bootstrap”
#4f82e5d0493ea31ed221e22b913e3d6c是序列号、kubelet-bootstrap是用户名、10001是id、system:kubelet-bootstrap是角色
4、开启apiserver
[root@master1 k8s]# bash apiserver.sh 192.168.200.11 https://192.168.200.11:2379,https://192.168.200.12:2379,https://192.168.200.13:2379
#本地IP、etcd的节点IP
5、检查是否启动成功
[root@master1 k8s]# systemctl status kube-apiserver.service
#也可以监听6443端口
二、启动scheduler服务
#依然是在mster上做
#在scheduler.sh目录下启动脚本
[root@master1 k8s]# ./scheduler.sh 127.0.0.1
#检验是否启动成功
[root@master1 k8s]# ./scheduler.sh 127.0.0.1
三、启动controller-manage
[root@master1 k8s]# ./controller-manager.sh 127.0.0.0
[root@master1 k8s]# systemctl status kube-controller-manager.service
四、查看节点状态
[root@master1 k8s]# /opt/kubernetes/bin/kubectl get cs
五、部署node1节点
1、将kubelet、kube-proxy考到node1上
#在master上操作
[root@master1 bin]# scp kubelet kube-proxy root@192.168.200.12:/opt/kubernetes/bin/
[root@master1 bin]# scp kubeletbe-proxy root@192.168.200.13:/opt/kubernetes/bin/
2、解压node.zip
#在node1节点上操作
[root@node1 ~]# unzip node.zip
#会解压出proxy.sh、kubelet.sh
3、拷贝kubeconfig.sh文件进行重命名
#创建kubeconfig
[root@master1 k8s]# mkdir kubeconfig
[root@master1 k8s]# cd kubeconfig/
#将kubeconfig.sh放入/k8s目录下
#进行重命名
[root@master1 kubeconfig]# mv kubeconfig.sh kubeconfig
[root@master1 kubeconfig]# vim kubeconfig
# 设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap \
–token=4f82e5d0493ea31ed221e22b913e3d6c \ #之前设置的tokenID号
–kubeconfig=bootstrap.kubeconfig
4、设置环境变量
[root@master1 kubeconfig]# vim /etc/profile
export PATH=$PATH:/opt/kubernetes/bin/
[root@master1 kubeconfig]# source /etc/profile
5、生成配置文件并拷贝到node上
[root@master1 kubeconfig]# bash kubeconfig 192.168.200.11 /root/k8s/k8s-cert/
[root@master1 kubeconfig]# ls
bootstrap.kubeconfig kubeconfig kube-proxy.kubeconfig[root@master1 kubeconfig]# scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.200.12:/opt/kubernetes/cfg/
[root@master1 kubeconfig]# scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.200.13:/opt/kubernetes/cfg/
6、创建bootstrap角色
#赋予权限用于连接apiserver请求签名(关键)
#在master节点上操作
[root@master1 kubeconfig]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
7、启动kubelet
#在node节点上操作
[root@node1 ~]# bash kubelet.sh 192.168.200.12
#在master节点上操作
#检查node1节点的请求
[root@master1 kubeconfig]# kubectl get csr
#Pending表示等待集群给该节点颁发证书
#颁发证书
[root@master1 kubeconfig]# kubectl certificate approve node-csr-dt6x_jhn50iERQlO_9VgnfJV1jTrPgnOBjnHf_Y9tNE
#检查节点
[root@master1 kubeconfig]# kubectl get csr
#Approved,Issued已经被允许加入节点了
#查看集群节点
[root@master1 kubeconfig]# kubectl get node
8、启动proxy服务
[root@node1 ~]# bash proxy.sh 192.168.200.12
#查看服务状态
[root@node1 ~]# systemctl status kube-proxy.service
六、配置node2节点
1、拷贝文件
#把现成的/opt/kubernetes复制到node2中
[root@node1 opt]# scp -r /opt/kubernetes/ root@192.168.200.13:/opt/
将node1节点的kubelet、kube-proxy拷贝到node2中
[root@node1 system]# scp kubelet.service kube-proxy.service root@192.168.200.13:/usr/lib/systemd/system/
2、删除证书
#因为拷贝过来的证书是node1申请的node2无法使用,所有需要删掉自己申请
[root@localhost ~]# cd /opt/kubernetes/ssl/
[root@localhost ssl]# rm -rf *
3、修改配置文件
#切换到cfg目录下
[root@localhost ssl]# cd …/cfg/
[root@localhost cfg]# vim kubelet
–hostname-override=192.168.200.13 \ #修改成本机IP
[root@localhost cfg]# vim kubelet.config
address: 192.168.200.13 #修改成本机IP
[root@localhost cfg]# vim kube-proxy
–hostname-override=192.168.200.13 \ #修改成本机IP
4、启动服务
[root@localhost cfg]# systemctl start kubelet.service
[root@localhost cfg]# systemctl enable kubelet.service
[root@localhost cfg]# systemctl start kube-proxy.service
[root@localhost cfg]# systemctl enable kube-proxy.service
5、授权许可加入集群
#在master操作,检查node2的请求
[root@master1 kubeconfig]# kubectl get csr
#授权许可加入集群
[root@master1 kubeconfig]# kubectl certificate approve node-csr-zPauba37OpC-w75hejeUiUmlauEPEnCyiyQLm0CGvlc
#查看集群中的节点
[root@master1 kubeconfig]# kubectl get node