如何理解kubernetesHA的sealos安裝方式

今天就跟大家聊聊有關(guān)如何理解kubernetes HA的sealos安裝方式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供滄州企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為滄州眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

概述

教你如何用一條 命令 構(gòu)建k8s高可用集群且不依賴haproxy和keepalived,也無需ansible。通過內(nèi)核ipvs對(duì)apiserver進(jìn)行負(fù)載均衡,并且?guī)piserver健康檢測(cè)。

準(zhǔn)備條件

裝好docker并啟動(dòng)docker,把離線安裝包 下載好拷貝到所有節(jié)點(diǎn)的/root目錄下, 不需要解壓,如果有文件服務(wù)器更好,sealos支持從一個(gè)服務(wù)器上wget到所有節(jié)點(diǎn)上

安裝

sealos已經(jīng)放在離線包中,解壓后在kube/bin目錄下(可以解壓一個(gè),獲取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í)需要使用

然后,就沒有然后了

其它參數(shù)

 --kubeadm-config string   kubeadm-config.yaml local # 自定義kubeadm配置文件,如有這個(gè)sealos就不去渲染kubeadm配置
 --pkg-url string          http://store.lameleg.com/kube1.14.1.tar.gz download offline pakage url # 支持從遠(yuǎn)程拉取離線包,省的每個(gè)機(jī)器拷貝,前提你得有個(gè)http服務(wù)器放離線包
 --vip string              virtual ip (default "10.103.97.2") # 代理master的虛擬IP,只要與你地址不沖突請(qǐng)不要改

清理

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é)點(diǎn)

新增節(jié)點(diǎn)可直接使用kubeadm, 到新節(jié)點(diǎn)上解壓

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-  # 去污點(diǎn),根據(jù)需求看情況,去了后master允許調(diào)度
kubectl apply -f heapster/ # 安裝heapster, 不安裝dashboard上沒監(jiān)控?cái)?shù)據(jù)
kubectl apply -f heapster/rbac 
kubectl apply -f dashboard  # 裝dashboard
kubectl apply -f prometheus # 裝監(jiān)控

是不是很神奇,到底是如何做到這點(diǎn)的?那就需要去看下面兩個(gè)東西

關(guān)于超級(jí)kubeadm

我們定制了kubeadm,做了兩個(gè)事情:

在每個(gè)node節(jié)點(diǎn)上增加了一條ipvs規(guī)則,其后端代理了三個(gè)master

在node上起了一個(gè)lvscare的static pod去守護(hù)這個(gè) ipvs, 一旦apiserver不可訪問了,會(huì)自動(dòng)清理掉所有node上對(duì)應(yīng)的ipvs規(guī)則, master恢復(fù)正常時(shí)添加回來。

通過這樣的方式實(shí)現(xiàn)每個(gè)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   |<---------------------+
  +----------+

其實(shí)sealos就是幫你執(zhí)行了如下命令:

super-kubeadm

在你的node上增加了三個(gè)東西:

cat /etc/kubernetes/manifests   # 這下面增加了lvscare的static pod
ipvsadm -Ln                     # 可以看到創(chuàng)建的ipvs規(guī)則
cat /etc/hosts                  # 增加了虛擬IP的地址解析

關(guān)于lvscare

這是一個(gè)超級(jí)簡單輕量級(jí)的lvs創(chuàng)建與守護(hù)進(jìn)程,支持健康檢查,底層與kube-proxy使用的是相同的庫,支持HTTP的健康檢測(cè)。

清理機(jī)器上的IPVS規(guī)則

ipvsadm -C

啟動(dòng)幾個(gè)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

啟動(dòng)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:6443

刪除一個(gè)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

再刪除一個(gè):

[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

此時(shí)VIP任然可以訪問:

[root@iZj6c9fiza9orwscdhate4Z ~]# curl 10.103.97.12:6443

全部刪除, 規(guī)則就自動(dòng)被清除光了, curl也curl不通了,因?yàn)闆]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都啟動(dòng)起來,規(guī)則就自動(dòng)被加回來

[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就是上面三個(gè)nginx,lvscare會(huì)對(duì)其進(jìn)行健康檢測(cè)。當(dāng)然你也可以把lvscare用于一些其它場(chǎng)景,比如代理自己的TCP服務(wù)等。

看完上述內(nèi)容,你們對(duì)如何理解kubernetes HA的sealos安裝方式有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

名稱欄目:如何理解kubernetesHA的sealos安裝方式
當(dāng)前網(wǎng)址:http://bm7419.com/article46/geighg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站改版、外貿(mào)建站外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)