環境規劃
<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叢集注冊到阿裡雲。參考https://help.aliyun.com/document_detail/121053.html?spm=5176.2020520152.0.0.7ebf16ddqDNQWO。
打開阿裡雲容器服務kubernetes控制台,點選右上角的注冊叢集,輸入叢集名稱,選擇地域,綁定EIP,然後點建立叢集。
在叢集導入代理配置區域單擊複制,将以下内容拷貝到一個檔案中,并執行Kubectl指令,将目标叢集注冊至新叢集中。
建立agent.yaml檔案,将以下内容拷貝到agent.yaml檔案中,并在目标叢集中執行kubectl apply -f agent.yaml指令。注冊成功後,您可以在容器服務管理控制台的Kubernetes 叢集清單頁面,看到新叢集的狀态為運作中