華為云GaussDB新產(chǎn)品特性亮相DTC2021,重磅新品開源預(yù)告
614
2025-04-04
一、kind配置HA高可用集群
k8s普通搭建出來只是單master節(jié)點,如果該節(jié)點掛掉,則整個集群都無法調(diào)度,K8s高可用集群是用多個master節(jié)點加負(fù)載均衡節(jié)點組成,外層再接高可用分布式存儲集群例如ceph集群,實現(xiàn)計算能力+存儲能力的高可用,同時,etcd也可以獨立出來用外部的etcd集群。因為存手工部署k8s高可用集群比較麻煩,所以使用kind來部署。
Kubernetes集群組件主要有如下:
etcd 一個高可用的K/V鍵值對存儲和服務(wù)發(fā)現(xiàn)系統(tǒng)
flannel 實現(xiàn)夸主機(jī)的容器網(wǎng)絡(luò)的通信
kube-apiserver 提供kubernetes集群的API調(diào)用
kube-controller-manager 確保集群服務(wù)
kube-scheduler 調(diào)度容器,分配到Node
kube-proxy 提供網(wǎng)絡(luò)代理服務(wù)
kubeadm:用來初始化集群的指令
kubectl: 用來與集群通信的命令行工具。通過kubectl可以部署和管理應(yīng)用,查看各種資源,創(chuàng)建、刪除和更新各種組件
kubelet 運行在集群中的每個節(jié)點上,用來啟動 pod 和 container 等
k8s集群高可用,一般是etcd、kube-apiserver、kube-controller-manager、kube-scheduler服務(wù)組件的高可用。
1.配置文件
kind-example-config.yaml配置案例如下:
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: control-plane - role: worker - role: worker
2.創(chuàng)建集群
kind create cluster --name yg-ha --config kind-ha.yml
3.查看集群信息
kubectl cluster-info --context yg-ha
4.查看集群節(jié)點列表
kubectl get nodes
5.部署nginx服務(wù)
5.1 加載鏡像到集群
kind load docker-image nginx:1.12 --name yg-ha
5.2 查看集群鏡像是否存在
docker exec -it yg-ha-control-plane bash crictl img
5.3 部署
使用下方代碼創(chuàng)建一個 nginx.yml 文件,然后使用 kubectl apply -f nginx.yml 就可以完成部署了
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.12 ports: - containerPort: 80
查看當(dāng)前 deployment 的狀態(tài)
kubectl get deployment
查看pod運行詳細(xì)信息
kubectl get nodes -o wide
由于我們沒有做服務(wù)暴露,所以是不能直接訪問對應(yīng)的服務(wù)的,我們可以用 kubectl提供的端口轉(zhuǎn)發(fā)功能來講流量從本地轉(zhuǎn)發(fā)給 k8s 集群
kubectl port-forward nginx-deployment-84fc49578f-28sth 30080:80
訪問nginx地址:http://localhost:30080
二、節(jié)點的添加
1.master節(jié)點添加到cluster
1.1 同步證書文件
將node1證書文件復(fù)制到其他master節(jié)點node2,node3
for host in node2 node3 do echo ">>>>>>>>>>>>>>>>>>>>$host<<<<<<<<<<<<<<<<<<<<<" ssh $host "mkdir -p /etc/kubernetes/pki/etcd" scp /etc/kubernetes/pki/ca.* $host:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/sa.* $host:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/front-proxy-ca.* $host:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/etcd/ca.* $host:/etc/kubernetes/pki/etcd/ scp /etc/kubernetes/admin.conf $host:/etc/kubernetes/ done
1.2 其他master加入集群
查看master的token
kubeadm token list | grep authentication,signing | awk '{print $1}'
查看discovery-token-ca-cert-hash
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
注意:token有效期是有限的,如果舊的token過期,可以使用kubeadm token create --print-join-command重新創(chuàng)建一條token。
分別在master1和master2 執(zhí)行下面的命令來加入集群,注意要修改token和ca-cert-hash為上面查詢出來的結(jié)果
kubeadm join 130.252.10.233:8443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:4d95989174b67c857bed7313750e021f07ec56beb2e6e764c7ef2de5645187e9 \ --experimental-control-plane --ignore-preflight-errors=Swap mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
2.將node節(jié)點添加到cluster
kubeadm join 130.252.10.233:8443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:4d95989174b67c857bed7313750e021f07ec56beb2e6e764c7ef2de5645187e9 \ --ignore-preflight-errors=Swap
總結(jié)
kind 在創(chuàng)建集群的時候?qū)嶋H上使用的是 kubeadm 所以還可以修改 kubeadm 的配置來修改默認(rèn)的鏡像地址,節(jié)點標(biāo)簽污點等信息,除此之外還可以配置 PV/PVC CNI 插件等配置,如果有需求的話可以查閱 kind 的官方文檔
不過要注意的是 kind 不支持給運行的集群添加節(jié)點,如果需要多節(jié)點集群的話得提前規(guī)劃好節(jié)點數(shù)量或者使用Karmada,Karmada是依賴于kind 創(chuàng)建集群的,基于kind的再次封裝可以支持節(jié)點的加入。
Kubernetes 容器
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。