国产性生交xxxxx免费-国产中文字幕-啊灬啊灬啊灬快灬高潮了,亚洲国产午夜精品理论片在线播放 ,亚洲欧洲日本无在线码,色爽交视频免费观看

鍋爐信息網 > 鍋爐知識 > 鍋爐資訊

跨云廠商部署 k3s 集群

發布時間:

原文鏈接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/nn最近一兩年各大云服務商都出了各種福利活動,很多小

原文鏈接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/

n

n

最近一兩年各大云服務商都出了各種福利活動,很多小伙伴薅了一波又一波羊毛,比如騰訊云 1C2G 95/年 真香系列,華為云和阿里云也都有類似的活動,薅個兩三臺就能搭建一個 Kubernetes 集群。但是跨云服務商搭建 Kubernetes 集群并不像我們想象中的那么容易,首先就是原生的 Kubernetes 組件本身對資源的消耗量很大,而云服務器的資源非常有限,經不起這么大家伙的折騰,對此我們可以選擇使用輕量級 Kubernetes 發行版:k3s

n

k3s 將安裝 Kubernetes 所需的一切打包進僅有 60MB 大小的二進制文件中,并且完全實現了 Kubernetes API。為了減少運行 Kubernetes 所需的內存,k3s 刪除了很多不必要的驅動程序,并用附加組件對其進行替換。由于它只需要極低的資源就可以運行,因此它能夠在任何 512MB 內存以上的設備上運行集群。

n

其實 k3s 的安裝非常簡單,分分鐘就能搞定,但對于公有云來說,還是有很多坑的,比如內網不通、公網 IP 不在服務器上該咋辦?本文就為你一一解決這些難題,讓天下的云羊毛都成為 k3s 的后宮!

n

1. 下載二進制文件

n

首先來解決第一個難題:k3s 二進制文件的下載。國內下載 GitHub 速度基本都是以幾個 kb 為單位,不忍直視,如果下載內容都是代碼,有很多辦法可以解決,比如通過碼云中轉啊、直接通過 CDN 下載啊,什么?你不知道可以通過 CDN 下載?好吧沒關系,現在我告訴你了:https://cdn.con.sh/。

n

但是上面的 CDN 并不能下載 release 里的內容,要想下載 release 里的內容,可以使用這個網站:https://toolwa.com/github/。打開網站,輸入 release 里面的文件下載鏈接,點擊起飛即可加速下載。

n

當然,如果你會魔法上網的話,上面的所有花里胡哨的方法都可以無視,直接下載就好啦(本文選擇使用版本 v1.17.6+k3s1):

n

$ wget https://github.com/rancher/k3s/releases/download/v1.17.6+k3s1/k3s -O /usr/local/bin/k3sn$ chmod +x /usr/local/bin/k3s

n

需要在所有節點中下載上述二進制文件。

n

2. 升級內核

n

k3s 的默認網絡插件是 flannel,默認模式是 vxlan 模式,建議使用 wireguard 模式,原因不解釋了,不知道 wireguard 是啥的自己去搜一下。

n

wireguard 對內核的要求比較高,而 CentOS 7.x 的默認內核是不滿足要求的,需要升級內核(如果你的操作系統是 CentOS 7.x 的話)。步驟如下:

n

① 載入公鑰

n

$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

n

② 升級安裝 elrepo

n

$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

n

③ 載入 elrepo-kernel 元數據

n

$ yum --disablerepo=* --enablerepo=elrepo-kernel repolist

n

④ 安裝最新版本的內核

n

$ yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y

n

⑤ 刪除舊版本工具包

n

$ yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y

n

⑥ 安裝新版本工具包

n

$ yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y

n

⑦ 查看內核插入順序

n

$ grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2nnCentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)nCentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)nCentOS Linux (0-rescue-96820b9851c24560b5f942f2496b9aeb) 7 (Core)

n

默認新內核是從頭插入,默認啟動順序也是從 0 開始。

n

⑧ 查看當前實際啟動順序

n

$ grub2-editenv listnnsaved_entry=CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)

n

⑨ 設置默認啟動

n

$ grub2-set-default 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)'

n

最后重啟檢查:

n

$ rebootn$ uname -r

n

注意:集群中的所有節點都需要升級內核。

n

3. 安裝 wireguard

n

內核升級了之后,就可以安裝 wireguard 了,也很簡單,步驟如下:

n

$ yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmn$ yum install yum-plugin-elrepon$ yum install kmod-wireguard wireguard-tools

n

注意:集群中的所有節點都需要安裝。

n

4. 部署控制平面

n

下面就可以在控制節點上啟動控制平面的組件了,這里我們選擇手動部署,這樣比較方便修改參數。先創建一個 Service Unit 文件:

n

$ cat > /etc/systemd/system/k3s.service <<EOFn[Unit]nDescription=Lightweight KubernetesnDocumentation=https://k3s.ionWants=network-online.targetnn[Install]nWantedBy=multi-user.targetnn[Service]nType=notifynEnvironmentFile=/etc/systemd/system/k3s.service.envnKillMode=processnDelegate=yesn# Having non-zero Limit*s causes performance problems due to accounting overheadn# in the kernel. We recommend using cgroups to do container-local accounting.nLimitNOFILE=1048576nLimitNPROC=infinitynLimitCORE=infinitynTasksMax=infinitynTimeoutStartSec=0nRestart=alwaysnRestartSec=5snExecStartPre=-/sbin/modprobe br_netfilternExecStartPre=-/sbin/modprobe overlaynExecStart=/usr/local/bin/k3s n server n --tls-san <public_ip> n --node-ip <public_ip> n --node-external-ip <public_ip> n --no-deploy servicelb n --flannel-backend wireguard n --kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" n --kube-proxy-arg "metrics-bind-address=0.0.0.0"nEOF

n

  • <public_ip> 替換成控制節點的公網 IP。
  • n
  • flannel 使用 wireguard 協議來跨主機通信。
  • n
  • kube-proxy 使用 ipvs 模式。
  • n

n

啟動 k3s 控制平面并設置開機自啟:

n

$ systemctl enable k3s --now

n

查看集群組件健康狀況:

n

$ kubectl get csnnNAME STATUS MESSAGE ERRORnscheduler Healthy okncontroller-manager Healthy ok

n

這里的輸出沒有 etcd,因為 k3s 的默認數據存儲是 Sqlite,對于小型數據庫十分友好。Kubernetes 控制平面中發生的更改更多是與頻繁更新部署、調度 Pod 等有關,因此對于幾個節點的小型集群而言,數據庫不會造成太大負載,能省下不少資源,真香!

n

5. 加入計算節點

n

部署好控制平面之后,就可以加入計算節點了。首先在計算節點上創建 Service Unit 文件:

n

$ cat > /etc/systemd/system/k3s-agent.service <<EOFn[Unit]nDescription=Lightweight KubernetesnDocumentation=https://k3s.ionWants=network-online.targetnn[Install]nWantedBy=multi-user.targetnn[Service]nType=execnEnvironmentFile=/etc/systemd/system/k3s-agent.service.envnKillMode=processnDelegate=yesnLimitNOFILE=infinitynLimitNPROC=infinitynLimitCORE=infinitynTasksMax=infinitynTimeoutStartSec=0nRestart=alwaysnRestartSec=5snExecStartPre=-/sbin/modprobe br_netfilternExecStartPre=-/sbin/modprobe overlaynExecStart=/usr/local/bin/k3s agent n --node-external-ip <public_ip> n --node-ip <public_ip> n --kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" n --kube-proxy-arg "metrics-bind-address=0.0.0.0"nEOF

n

環境變量文件 /etc/systemd/system/k3s-agent.service.env 中需要加入兩個環境變量:

n

  • K3S_URL : API Server 的 URL,一般格式為:https://<master_ip>:6443。其中 是控制節點的公網 IP。
  • n
  • K3S_TOKEN : 加入集群所需的 token,可以在控制節點上查看 /var/lib/rancher/k3s/server/node-token 文件。
  • n

n

/etc/systemd/system/k3s-agent.service.env 內容如下:

n

K3S_URL=https://<master_ip>:6443nK3S_TOKEN=xxxxxxxx

n

啟動 k3s-agent 并設置開啟自啟:

n

$ systemctl enable k3s-agent --now

n

查看節點狀態:

n

$ kubectl get nodennNAME STATUS ROLES AGE VERSIONnblog-k3s01 Ready master 3d6h v1.17.6+k3s1nblog-k3s02 Ready <none> 3d3h v1.17.6+k3s1

n

6. 內網不互通的解決辦法

n

這里會遇到一個問題,不同節點的 flannel 使用的是內網 IP 來進行通信,而我們的云服務器是內網不互通的,而且公網 IP 也不在服務器上。可以看一下 node 的 annotations

n

$ kubectl get node blog-k3s02 -o yamlnnapiVersion: v1nkind: Nodenmetadata:n annotations:n flannel.alpha.coreos.com/backend-data: '"xxxxx"'n flannel.alpha.coreos.com/backend-type: extensionn flannel.alpha.coreos.com/kube-subnet-manager: "true"n flannel.alpha.coreos.com/public-ip: 192.168.0.11n ...

n

可以看到 flannel 給節點打的注解中的節點 IP 是內網 IP。要想讓 flannel 使用公網 IP 進行通信,需要額外添加一個注解 public-ip-overwrite,然后 flannel 會基于這個 IP 配置網絡。按照官方文檔的說法,如果你的 node 設置了 ExternalIP,flannel 會自動給 node 添加一個注解 public-ip-overwrite,但我不知道該如何給 node 設置 ExternalIP,干脆就直接手動加注解吧:

n

$ kubectl annotate nodes <master> flannel.alpha.coreos.com/public-ip-overwrite=<master_pub_ip>n$ kubectl annotate nodes <node> flannel.alpha.coreos.com/public-ip-overwrite=<node_pub_ip>

n

加了注解之后,flannel 的 public-ip 就會被修改為公網 IP。然后在各個節點上重啟各自的 k3s 服務,查看 wireguard 連接狀況:

n

$ wg show flannel.1nninterface: flannel.1n public key: ONDgJCwxxxxxxxJvdWpoOKTxQA=n private key: (hidden)n listening port: 51820nnpeer: MKKaanTxxxxxxxV8VpcHq4CSRISshw=n endpoint: <pub_ip>:51820n allowed ips: 10.42.4.0/24n latest handshake: 26 seconds agon transfer: 133.17 KiB received, 387.44 KiB sentn persistent keepalive: every 25 seconds

n

可以看到通信端點被改成了公網 IP,大功告成!

n

7. metrics-server 問題解決

n

還有一個問題就是 metrics-server 無法獲取 cpu、內存等利用率核心指標。需要修改 metrics-server 的 manifests,使用以下命令在線編輯 metrics-server 的 manifests:

n

$ kubectl -n kube-system edit deploy metrics-server

n

然后加入以下執行參數后保存退出:

n

-command:n - /metrics-servern - --kubelet-preferred-address-types=ExternalIPn - --kubelet-insecure-tls

n

這樣就可以讓 metrics-server 使用公網 IP 來和 node 通信了。修改成功后就可以看到核心指標了:

n

$ kubectl top nodesnNAME CPU(cores) CPU% MEMORY(bytes) MEMORY%nblog-k3s01 193m 9% 886Mi 22%nblog-k3s02 41m 2% 1292Mi 32%nn$ kubectl top pod -n kube-systemnNAME CPU(cores) MEMORY(bytes)ncoredns-848b6cc76f-zq576 8m 14Minlocal-path-provisioner-58fb86bdfd-bzdfl 2m 9Minmetrics-server-bdfc79c97-djmzk 1m 12Mi

n

到這里跨云服務商部署 k3s 基本上就大功告成了,下一篇文章將會教你如何打通家里到云上 k3s 的網絡,讓你家中所有設備都可以直接訪問 Pod IP、svc IP,甚至可以直接訪問 svc 域名,敬請期待。

n


n

Kubernetes 1.18.2 1.17.5 1.16.9 1.15.12離線安裝包發布地址http://store.lameleg.com ,歡迎體驗。 使用了最新的sealos v3.3.6版本。 作了主機名解析配置優化,lvscare 掛載/lib/module解決開機啟動ipvs加載問題, 修復lvscare社區netlink與3.10內核不兼容問題,sealos生成百年證書等特性。更多特性 https://github.com/fanux/sealos 。歡迎掃描下方的二維碼加入釘釘群 ,釘釘群已經集成sealos的機器人實時可以看到sealos的動態。

n

https://qr.dingtalk.com/action/joingroup?code=v1,k1,zVBIDO0WoCJb+cPDqxXHb67W9HeuqAIMnpKVoboD8tA= (二維碼自動識別)

精選推薦

  • 如何正確選擇白板供應商
    如何正確選擇白板供應商

    目前在無錫想采購一塊白板不管是實體店鋪,還是網絡平臺都有很多選擇,想要到專業的無錫白板公司采購還需要掌握一定的方式技巧。現

  • 柴油發電機組供應商
    柴油發電機組供應商

      t 揚州華東動力機械有限公司,位于江蘇省揚州市江都區仙城工業園,是專業從事發電機、柴油及燃氣發電機組研發、制造、銷售、服務于

  • 高溫輻射爐
    高溫輻射爐

    5.2.2高溫輻射爐5.2.2.1溫度控制★(1)樣品溫度范圍:常溫~1400℃。★(2)均溫區:長度不小于80mm。★(3)中心區:長度不小于10mm。(4)溫度梯度(均

  • 高壓鍋在什么情況下會爆炸?
    高壓鍋在什么情況下會爆炸?

    近日,多地發生高壓鍋爆炸事故,給不少家庭帶來了傷害和財產損失。那么,什么情況下會導致高壓鍋爆炸呢?首先,當高壓鍋內部壓力過高時,如果

0