摘要:集群三步安裝概述本文教你如何用一條命令構(gòu)建高可用集群且不依賴和,也無需。通過內(nèi)核對進(jìn)行負(fù)載均衡,并且?guī)Ы】禉z測。當(dāng)然你也可以把用于一些其它場景,比如代理自己的服務(wù)等
kubernetes集群三步安裝概述
本文教你如何用一條命令構(gòu)建k8s高可用集群且不依賴haproxy和keepalived,也無需ansible。通過內(nèi)核ipvs對apiserver進(jìn)行負(fù)載均衡,并且?guī)piserver健康檢測。
快速入門sealos項目地址
準(zhǔn)備條件裝好docker并啟動docker
把離線安裝包 下載好拷貝到所有節(jié)點的/root目錄下, 不需要解壓,如果有文件服務(wù)器更好,sealos支持從一個服務(wù)器上wget到所有節(jié)點上
安裝sealos已經(jīng)放在離線包中,解壓后在kube/bin目錄下(可以解壓一個,獲取sealos bin文件)
sealos init --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 # master地址列表 --node 192.168.0.5 # node地址列表 --user root # 服務(wù)用戶名 --passwd your-server-password # 服務(wù)器密碼,用于遠(yuǎn)程執(zhí)行命令 --pkg kube1.14.1.tar.gz # 離線安裝包名稱 --version v1.14.1 # kubernetes 離線安裝包版本,這渲染kubeadm配置時需要使用
然后,就沒有然后了
其它參數(shù):
--kubeadm-config string kubeadm-config.yaml local # 自定義kubeadm配置文件,如有這個sealos就不去渲染kubeadm配置 --pkg-url string http://store.lameleg.com/kube1.14.1.tar.gz download offline pakage url # 支持從遠(yuǎn)程拉取離線包,省的每個機(jī)器拷貝,前提你得有個http服務(wù)器放離線包 --vip string virtual ip (default "10.103.97.2") # 代理master的虛擬IP,只要與你地址不沖突請不要改清理
sealos clean --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 # master地址列表 --node 192.168.0.5 # node地址列表 --user root # 服務(wù)用戶名 --passwd your-server-password增加節(jié)點
新增節(jié)點可直接使用kubeadm, 到新節(jié)點上解壓
cd kube/shell && init.sh echo "10.103.97.2 apiserver.cluster.local" >> /etc/hosts # using vip kubeadm join 10.103.97.2:6443 --token 9vr73a.a8uxyaju799qwdjv --master 10.103.97.100:6443 --master 10.103.97.101:6443 --master 10.103.97.102:6443 --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866安裝dashboard prometheus等
離線包里包含了yaml配置和鏡像,用戶按需安裝。
cd /root/kube/conf kubectl taint nodes --all node-role.kubernetes.io/master- # 去污點,根據(jù)需求看情況,去了后master允許調(diào)度 kubectl apply -f heapster/ # 安裝heapster, 不安裝dashboard上沒監(jiān)控數(shù)據(jù) kubectl apply -f heapster/rbac kubectl apply -f dashboard # 裝dashboard kubectl apply -f prometheus # 裝監(jiān)控
是不是很神奇,到底是如何做到這點的?那就需要去看下面兩個東西
關(guān)于超級kubeadm我們定制了kubeadm,做了兩個事情:
在每個node節(jié)點上增加了一條ipvs規(guī)則,其后端代理了三個master
在node上起了一個lvscare的static pod去守護(hù)這個 ipvs, 一旦apiserver不可訪問了,會自動清理掉所有node上對應(yīng)的ipvs規(guī)則, master恢復(fù)正常時添加回來。
通過這樣的方式實現(xiàn)每個node上通過本地內(nèi)核負(fù)載均衡訪問masters:
+----------+ +---------------+ virturl server: 127.0.0.1:6443 | mater0 |<----------------------| ipvs nodes | real servers: +----------+ |+---------------+ 10.103.97.200:6443 | 10.103.97.201:6443 +----------+ | 10.103.97.202:6443 | mater1 |<---------------------+ +----------+ | | +----------+ | | mater2 |<---------------------+ +----------+
這是一個非常優(yōu)雅的方案
其實sealos就是幫你執(zhí)行了如下命令:
super-kubeadm
在你的node上增加了三個東西:
cat /etc/kubernetes/manifests # 這下面增加了lvscare的static pod ipvsadm -Ln # 可以看到創(chuàng)建的ipvs規(guī)則 cat /etc/hosts # 增加了虛擬IP的地址解析關(guān)于lvscare
這是一個超級簡單輕量級的lvs創(chuàng)建與守護(hù)進(jìn)程,支持健康檢查,底層與kube-proxy使用的是相同的庫,支持HTTP的健康檢測。
清理機(jī)器上的IPVS規(guī)則
ipvsadm -C
啟動幾個nginx作為ipvs代理后端的realserver
docker run -p 8081:80 --name nginx1 -d nginx docker run -p 8082:80 --name nginx2 -d nginx docker run -p 8083:80 --name nginx3 -d nginx
啟動lvscare守護(hù)它們
lvscare care --vs 10.103.97.12:6443 --rs 127.0.0.1:8081 --rs 127.0.0.1:8082 --rs 127.0.0.1:8083 --health-path / --health-schem http
可以看到規(guī)則已經(jīng)被創(chuàng)建
ipvsadm -Ln [root@iZj6c9fiza9orwscdhate4Z ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.103.97.12:6443 rr -> 127.0.0.1:8081 Masq 1 0 0 -> 127.0.0.1:8082 Masq 1 0 0 -> 127.0.0.1:8083 Masq 1 0 0
curl vip:
[root@iZj6c9fiza9orwscdhate4Z ~]# curl 10.103.97.12:6443Welcome to nginx!
刪除一個nginx,規(guī)則就少了一條
[root@iZj6c9fiza9orwscdhate4Z ~]# docker stop nginx1 nginx1 [root@iZj6c9fiza9orwscdhate4Z ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.103.97.12:6443 rr -> 127.0.0.1:8082 Masq 1 0 0 -> 127.0.0.1:8083 Masq 1 0 1
再刪除一個:
[root@iZj6c9fiza9orwscdhate4Z ~]# docker stop nginx2 nginx2 [root@iZj6c9fiza9orwscdhate4Z ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.103.97.12:6443 rr -> 127.0.0.1:8083 Masq 1 0 0
此時VIP任然可以訪問:
[root@iZj6c9fiza9orwscdhate4Z ~]# curl 10.103.97.12:6443Welcome to nginx!
全部刪除, 規(guī)則就自動被清除光了, curl也curl不通了,因為沒realserver可用了
[root@iZj6c9fiza9orwscdhate4Z ~]# docker stop nginx3 nginx3 [root@iZj6c9fiza9orwscdhate4Z ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.103.97.12:6443 rr [root@iZj6c9fiza9orwscdhate4Z ~]# curl 10.103.97.12:6443 curl: (7) Failed connect to 10.103.97.12:6443; 拒絕連接
再把nginx都啟動起來,規(guī)則就自動被加回來
[root@iZj6c9fiza9orwscdhate4Z ~]# docker start nginx1 nginx2 nginx3 nginx1 nginx2 nginx3 [root@iZj6c9fiza9orwscdhate4Z ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.103.97.12:6443 rr -> 127.0.0.1:8081 Masq 1 0 0 -> 127.0.0.1:8082 Masq 1 0 0 -> 127.0.0.1:8083 Masq 1 0 0
所以sealos中,上面apiserver就是上面三個nginx,lvscare會對其進(jìn)行健康檢測。
當(dāng)然你也可以把lvscare用于一些其它場景,比如代理自己的TCP服務(wù)等
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27772.html
摘要:集群三步安裝構(gòu)建生產(chǎn)環(huán)境可用的高可用集群項目地址特性支持任意節(jié)點的集群自動構(gòu)建,且集群使用安全證書,通過方式啟動,這樣可以通過監(jiān)控來監(jiān)控集群健康狀態(tài)支持多節(jié)點,允許任意一臺宕機(jī)集群功能不受影響使用集群,配置安全證書,網(wǎng)絡(luò)管控數(shù)據(jù)無單點故障包 kubernetes集群三步安裝 構(gòu)建生產(chǎn)環(huán)境可用的高可用kubernetes集群 | sealos項目地址 特性 [x] 支持任意節(jié)點的et...
摘要:主要介紹的主要特性和一些經(jīng)驗。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...
摘要:主要介紹的主要特性和一些經(jīng)驗。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...
摘要:問題是不是定義的一個的容器集群是只部署在同一個主機(jī)上楊樂到目前是,同一個里的是部署在同一臺主機(jī)的。問題這個圖里的是安裝在哪里的所有的客戶端以及會連接這個嘛楊樂可以任意地方,只要能訪問到集群,會作為的出口。 kubernetes1.0剛剛發(fā)布,開源社區(qū)400多位貢獻(xiàn)者一年的努力,多達(dá)14000多次的代碼提交,最終達(dá)到了之前預(yù)計的milestone, 并意味著這個開源容器編排系統(tǒng)可以正式在...
摘要:在本文中我們將介紹如何使用在集群上部署和管理。非常強(qiáng)大,它能夠在任何地方管理集群,因此我們將在實例上以獨立模式啟動,使用它在中部署集群。現(xiàn)在,當(dāng)你點擊,就會把部署到你的集群上。當(dāng)安裝完成后,紅色的進(jìn)度條會變更為綠色。 JFrog Artifactory是一個artifacts倉庫管理平臺,它支持所有的主流打包格式、構(gòu)建工具和持續(xù)集成(CI)服務(wù)器。它將所有二進(jìn)制內(nèi)容保存在一個單一位置并...
閱讀 3455·2023-04-25 22:44
閱讀 976·2021-11-15 11:37
閱讀 1661·2019-08-30 15:55
閱讀 2677·2019-08-30 15:54
閱讀 1120·2019-08-30 13:45
閱讀 1456·2019-08-29 17:14
閱讀 1883·2019-08-29 13:50
閱讀 3443·2019-08-26 11:39