天天看點

生産環境部署K8S高可用叢集

環境規劃

<col>

伺服器名稱

IP位址

角色

安裝元件

版本

備注

master_1

47.140.1.41

192.168.1.101

master

etcd-v3.3.11

kube-apiserver

kube-controller-manager

kube-scheduler

docker

v1.16.6

master節點

master_2

47.140.1.42

192.168.1.102

master_3

47.140.1.43

192.168.1.103

node_1

47.140.1.44

192.168.1.104

worker

kubelet

kube-proxy

flannel-v0.11.0

haproxy

keepalived

worker節點

node_2

47.140.1.45

192.168.1.105

node_3

47.140.1.46

192.168.1.106

192.168.1.100

kube-apiserver内網的VIP位址

說明:

192.168.1.101-103為master節點,部署etcd,kube-apiserver,kube-controll-manager,kube-scheduler,kube-apiserver的高可用與負載方式采取在192.168.1.105和192.168.1.106上部署keepalived+haproxy來實作。

kube-controller-manager和kube-scheduler需要操作kube-apiserver,為了保證資料的唯一性,采用了選舉leader的方式來實作高可用。192.168.1.104和192.168.1.105采用了daemonset+hostNetwork部署了nginx-ingress-controller,直接在主控端上暴露80和443端口。

使用firewalld防火牆,eth0為外網網卡,eth1為内網網卡,将eth0添加到zone為publi區域,eth1和flannel.1添加到internal區域:

firewall-cmd --zone=public --change-interface=eth0     

firewall-cmd --zone=internal --change-interface=eth1

firewall-cmd --zone=internal --change-interface=flannel.1

部署etcd叢集etcd簡介

etcd是CoreOS團隊于2013年6月發起的開源項目,它的目标是建構一個高可用的分布式鍵值(key-value)資料庫。etcd内部采用raft協定作為一緻性算法,etcd基于Go語言實作。etcd作為服務發現系統,有以下的特點:

簡單:安裝配置簡單,而且提供了HTTP API進行互動,使用也很簡單

安全:支援SSL證書驗證

快速:根據官方提供的benchmark資料,單執行個體支援每秒2k+讀操作

可靠:采用raft算法,實作分布式系統資料的可用性和一緻性

etcd項目位址:https://github.com/coreos/etcd/

下載下傳安裝包

建立證書檔案

添加配置檔案

防火牆zone為internal開放2379和2380端口

啟動

驗證叢集

部署master節點下載下傳kubernetes v1.16.6版本檔案

部署kube-apiserver

部署kube-controller-manager

部署kube-scheduler

部署worker節點部署docker

部署flanneld網絡插件

配置docker連接配接flanneld網絡

配置kubeconfig,在master節點操作

部署kubelet

部署kube-proxy

加入其他worker節點

部署master節點高可用kube-apiserver高可用(内網高可用vip為192.168.1.100)

kube-controller-manager高可用

kube-scheduler高可用

部署haproxy+keepalived(192.168.104和192.168.105)

修改kublet和kube-proxy配置檔案的kube-apiserver為vip位址

生成管理叢集工具kubectl的配置檔案

高可用測試

部署coredns

部署ingress-nginx

注冊到阿裡雲k8s叢集

如沒有阿裡帳号的點選https://www.aliyun.com/minisite/goods?userCode=8srasrh9 可以領取阿裡雲優惠劵。

生産環境部署K8S高可用叢集

了為友善k8s叢集管理,将部署好的k8s叢集注冊到阿裡雲。參考https://help.aliyun.com/document_detail/121053.html?spm=5176.2020520152.0.0.7ebf16ddqDNQWO。

打開阿裡雲容器服務kubernetes控制台,點選右上角的注冊叢集,輸入叢集名稱,選擇地域,綁定EIP,然後點建立叢集。

生産環境部署K8S高可用叢集
生産環境部署K8S高可用叢集

在叢集導入代理配置區域單擊複制,将以下内容拷貝到一個檔案中,并執行Kubectl指令,将目标叢集注冊至新叢集中。

建立agent.yaml檔案,将以下内容拷貝到agent.yaml檔案中,并在目标叢集中執行kubectl apply -f agent.yaml指令。注冊成功後,您可以在容器服務管理控制台的Kubernetes 叢集清單頁面,看到新叢集的狀态為運作中

生産環境部署K8S高可用叢集
生産環境部署K8S高可用叢集

繼續閱讀