Kubernetes master节点的高可用配置
?
了解Kubernetes架構(gòu)都知道Master節(jié)點(diǎn)在整個(gè)集群中的位置,為了保證整個(gè)架構(gòu)的高可用,Kubernetes提供了HA的架構(gòu),處于興趣和對架構(gòu)的進(jìn)一步了解,我在自己的電腦實(shí)踐以下.
環(huán)境:
? ? ? CentOS 7.3,Kubernetes版本
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:57:05Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:52:01Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}?
? ? ? 主機(jī)環(huán)境 /etc/hosts
? ? ??
192.168.0.107 k8s-master1 192.168.0.108 k8s-master2 192.168.0.109 k8s-master3?
1.搭建ETCD的集群
- 禁止selinux以及防火墻
- 安裝軟件包
- 配置定時(shí)更新
- 下載安裝包
- 編寫一個(gè)deploy-etcd.sh的腳本,并運(yùn)行
?
- 運(yùn)行如下命令
?
- 發(fā)現(xiàn)如下錯(cuò)誤:
原因是etcdctl總是去找本地的地址,指定endpoint,輸出如下:
[root@k8s-master1 ~]# etcdctl -endpoints "http://192.168.0.107:2379,http://192.168.0.108:2379,http://192.168.0.109:2379" cluster-health member 1578ba76eb3abe05 is healthy: got healthy result from http://192.168.0.108:2379 member beb7fd3596aa26eb is healthy: got healthy result from http://192.168.0.109:2379 member e6bdc10e37172e00 is healthy: got healthy result from http://192.168.0.107:2379 cluster is healthy?
? ? ??
?2.搭建kubernetes高可用環(huán)境
- 默認(rèn)master和etcd部署在同一臺(tái)設(shè)備,共三臺(tái)相互冗余
- 離線安裝的介質(zhì)可以直接在https://pan.baidu.com/s/1i5jusip 下載
- 通過HFS啟動(dòng)個(gè)http server,安裝節(jié)點(diǎn)會(huì)從這里拉取鏡像和rpm
先下載hfs,因?yàn)槲沂窃趙indows 7的主機(jī)環(huán)境,所以下載一個(gè)windows版本,啟動(dòng)以后,將下載的目錄和文件都拖到hfs界面中,如圖
?
?關(guān)掉windows防火墻.
?
修改k8s-deploy.sh腳本,修改的地方如下
HTTP_SERVER=192.168.0.103:8000 . . . #master側(cè)不需要修改成ip,保持原來的$(master_ip)就可以,但replicate側(cè)需要修改,具體原因還需要查 kube::copy_master_config() {local master_ip=$(etcdctl get ha_master)mkdir -p /etc/kubernetesscp -r root@192.168.0.107:/etc/kubernetes/* /etc/kubernetes/systemctl start kubelet }?
- Master節(jié)點(diǎn)
- 192.168.0.101:8000 是我的http-server, 注意要將k8s-deploy.sh 里的HTTP-SERVER變量也改下
- –api-advertise-addresses 是VIP地址
- –external-etcd-endpoints 是你的etcd集群地址,這樣kubeadm將不再生成etcd.yaml manifest文件
- 記錄下你的token輸出, minion側(cè)需要用到
? ? 運(yùn)行完后輸出
[init] Using Kubernetes version: v1.5.1 [tokens] Generated token: "e5029f.020306948a9c120f" [certificates] Generated Certificate Authority key and certificate. [certificates] Generated API Server key and certificate [certificates] Generated Service Account signing keys [certificates] Created keys and certificates in "/etc/kubernetes/pki" [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf" [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf" [apiclient] Created API client, waiting for the control plane to become ready [apiclient] All control plane components are healthy after 23.199910 seconds [apiclient] Waiting for at least one node to register and become ready [apiclient] First node is ready after 0.512201 seconds [apiclient] Creating a test deployment [apiclient] Test deployment succeeded [token-discovery] Created the kube-discovery deployment, waiting for it to become ready [token-discovery] kube-discovery is ready after 2.004430 seconds [addons] Created essential addon: kube-proxy [addons] Created essential addon: kube-dnsYour Kubernetes master has initialized successfully!You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:http://kubernetes.io/docs/admin/addons/ You can now join any number of machines by running the following on each node:kubeadm join --token=e5029f.020306948a9c120f 192.168.0.110 + echo -e '\033[32m 趕緊找地方記錄上面的token! \033[0m'趕緊找地方記錄上面的token! + kubectl apply -f http://192.168.0.101:8000/network/kube-flannel.yaml --namespace=kube-system serviceaccount "flannel" created configmap "kube-flannel-cfg" created daemonset "kube-flannel-ds" created + kubectl get po --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system dummy-2088944543-fjhbc 1/1 Running 0 7s kube-system kube-discovery-1769846148-ks84b 1/1 Running 0 6s kube-system kube-dns-2924299975-zg6b8 0/4 ContainerCreating 0 3s kube-system kube-flannel-ds-jzq98 0/2 Pending 0 1s kube-system kube-proxy-c0mx7 0/1 ContainerCreating 0 3s?
- Relica Master節(jié)點(diǎn)
輸出
++ hostname + grep k8s-master2 k8s-master2 Ready 30s ++ hostname + kubectl label node k8s-master2 kubeadm.alpha.kubernetes.io/role=master node "k8s-master2" labeled?
建立了3個(gè)節(jié)點(diǎn)的HA集群后,先運(yùn)行命令查看情況
[root@k8s-master2 ~]# kubectl get nodes NAME STATUS AGE k8s-master1 Ready,master 11h k8s-master2 Ready,master 5m k8s-master3 Ready,master 9h [root@k8s-master2 ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system dummy-2088944543-fjhbc 1/1 Running 1 11h kube-system kube-apiserver-k8s-master1 1/1 Running 4 11h kube-system kube-apiserver-k8s-master2 1/1 Running 0 5m kube-system kube-apiserver-k8s-master3 1/1 Running 1 9h kube-system kube-controller-manager-k8s-master1 1/1 Running 4 11h kube-system kube-controller-manager-k8s-master2 1/1 Running 0 5m kube-system kube-controller-manager-k8s-master3 1/1 Running 1 9h kube-system kube-discovery-1769846148-ks84b 1/1 Running 1 11h kube-system kube-dns-2924299975-zg6b8 4/4 Running 10 11h kube-system kube-flannel-ds-37zsp 2/2 Running 3 9h kube-system kube-flannel-ds-8kwnh 2/2 Running 0 5m kube-system kube-flannel-ds-jzq98 2/2 Running 4 11h kube-system kube-proxy-c0mx7 1/1 Running 1 11h kube-system kube-proxy-r9nmw 1/1 Running 1 9h kube-system kube-proxy-rbxf7 1/1 Running 0 5m kube-system kube-scheduler-k8s-master1 1/1 Running 3 11h kube-system kube-scheduler-k8s-master2 1/1 Running 0 5m kube-system kube-scheduler-k8s-master3 1/1 Running 1 9h關(guān)掉一個(gè)master1,驗(yàn)證vip
64 bytes from 192.168.0.110: icmp_seq=129 ttl=64 time=0.049 ms 64 bytes from 192.168.0.110: icmp_seq=130 ttl=64 time=0.050 ms 64 bytes from 192.168.0.110: icmp_seq=131 ttl=64 time=0.049 ms 64 bytes from 192.168.0.110: icmp_seq=132 ttl=64 time=0.049 ms 64 bytes from 192.168.0.110: icmp_seq=133 ttl=64 time=0.049 ms 64 bytes from 192.168.0.110: icmp_seq=134 ttl=64 time=0.099 ms 64 bytes from 192.168.0.110: icmp_seq=135 ttl=64 time=0.048 ms?
- Minion節(jié)點(diǎn)
- token是第一個(gè)master節(jié)點(diǎn)生成
- 192.168.0.110是浮動(dòng)vip
- 因?yàn)橘Y源有限沒有驗(yàn)證minion節(jié)點(diǎn)部署
?
驗(yàn)證未完待續(xù).
?
轉(zhuǎn)載于:https://www.cnblogs.com/ericnie/p/6919992.html
總結(jié)
以上是生活随笔為你收集整理的Kubernetes master节点的高可用配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse中访问不了tomcat首页
- 下一篇: EntityFramework 并发处理