05 部署 kube-apiserver 組件
Kubernetes 核心組件之一脚乡,提供其他模塊之間的數(shù)據(jù)交互和通信的樞紐。
更多內(nèi)容請(qǐng)移步 Kubernetes 官網(wǎng)詳閱。
5.1 獲取二進(jìn)制軟件包
在本地主機(jī)上操作菠秒。
從 GitHub 下載二進(jìn)制軟件包赊瞬,這里整理了一個(gè) Master 組件 v1.23.6 版本的軟件包,里面只包含了 3 個(gè)文件:kube-apiserver椭岩、kube-controller-manager茅逮、kube-scheduler。
官方GitHub:Kubernetes
解壓之后將 kube-apiserver 分發(fā)到 3 臺(tái)服務(wù)器上判哥。
cd /data/k8s-deploy/software
wget https://github.com/pjgmow/kubernetes/releases/download/v1.23.6/kubernetes-server-v1.23.6-linux-amd64.tar.gz
tar xf kubernetes-server-v1.23.6-linux-amd64.tar.gz && cd kubernetes-server-v1.23.6-linux-amd64
#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp kube-apiserver root@$h:/usr/local/bin/;done
scp kube-apiserver root@k8s-master-01:/usr/local/bin/
scp kube-apiserver root@k8s-master-02:/usr/local/bin/
scp kube-apiserver root@k8s-master-03:/usr/local/bin/
5.2 生成token
在本地主機(jī)上操作献雅。
k8s-deploy 已提供了模板文件,通過(guò)命令生成 token
塌计,然后替換模板文件里的 __TOKEN__
即可挺身。
token 文件修改完成后,將其分發(fā)到 3 臺(tái)服務(wù)器上锌仅。
cd /data/k8s-deploy/kubeconfig
TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
sed -i "s#__TOKEN__#${TOKEN}#" ./token.csv
#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp token.csv root@$h:/etc/kubernetes/kubeconfig/;done
scp token.csv root@k8s-master-01:/etc/kubernetes/kubeconfig/
scp token.csv root@k8s-master-02:/etc/kubernetes/kubeconfig/
scp token.csv root@k8s-master-03:/etc/kubernetes/kubeconfig/
token.csv 文件內(nèi)容格式:Token,User,UID,Group
token中的文件內(nèi)容在后面部署 kubelet 組件會(huì)用到章钾,且 kubelet 和 kube-apiserver 中的 Token 必須一致,否則 kubelet 無(wú)法加入集群热芹。
看下我這里的 token.csv 內(nèi)容贱傀。
cat token.csv
57a29c8a52405240cfc8a070e8d2b372,kubelet-bootstrap,10001,"system:bootstrappers"
5.3 生成服務(wù)配置文件
在本地主機(jī)上操作。
k8s-deploy 已提供了 kube-apiserver 的配置文件模板伊脓,文件中有幾個(gè)內(nèi)容需要修改:
__CLUSTER_SERVICE_CIDR__:Kubernetes Service 資源的網(wǎng)段
__SERVICE_PORT_RANGE__:Kubernetes Service 資源的端口范圍
__ETCD_CLUSTER_SERVERS__:etcd 集群的訪問(wèn)地址
修改配置文件內(nèi)容窍箍,將其分發(fā)到 3 臺(tái)服務(wù)器上。
CLUSTER_SERVICE_CIDR=10.0.0.0/12
SERVICE_PORT_RANGE=30000-32767
ETCD_CLUSTER_SERVERS=https://192.168.3.201:2379,https://192.168.3.202:2379,https://192.168.3.203:2379
cd /data/k8s-deploy/config
sed -i "s#__CLUSTER_SERVICE_CIDR__#$CLUSTER_SERVICE_CIDR#" ./kube-apiserver.conf
sed -i "s#_SERVICE_PORT_RANGE__#$SERVICE_PORT_RANGE#" ./kube-apiserver.conf
sed -i "s#__ETCD_CLUSTER_SERVERS__#$ETCD_CLUSTER_SERVERS#" ./kube-apiserver.conf
#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp kube-apiserver.conf root@$h:/etc/kubernetes/conf/;done
scp kube-apiserver.conf root@k8s-master-01:/etc/kubernetes/conf/
scp kube-apiserver.conf root@k8s-master-02:/etc/kubernetes/conf/
scp kube-apiserver.conf root@k8s-master-03:/etc/kubernetes/conf/
5.4 生成服務(wù)啟動(dòng)管理文件
在本地主機(jī)上操作丽旅。
k8s-deploy 已提供了服務(wù)啟動(dòng)管理文件椰棘,不需要修改內(nèi)容,直接分發(fā)到 3 臺(tái)服務(wù)器即可榄笙。
cd /data/k8s-deploy/service
#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp kube-apiserver.service root@$h:/etc/systemd/system/;done
scp kube-apiserver.service root@k8s-master-01:/etc/systemd/system/
scp kube-apiserver.service root@k8s-master-02:/etc/systemd/system/
scp kube-apiserver.service root@k8s-master-03:/etc/systemd/system/
5.5 啟動(dòng) kube-apiserver 服務(wù)
分別在 3 臺(tái)服務(wù)器上操作邪狞。
服務(wù)配置文件和服務(wù)啟動(dòng)管理文件都分發(fā)之后,分別登錄到 3 臺(tái)服務(wù)器上啟動(dòng) kube-apiserver 服務(wù)茅撞。
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
systemctl status kube-apiserver
通過(guò) curl
命令來(lái)檢查一下帆卓。
curl -k https://k8s-master-01:6443
正常返回內(nèi)容如下,code
是 401米丘。
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "Unauthorized",
"reason": "Unauthorized",
"code": 401
}