RKE部署高可用Kubernetes集群
RKE簡介
RKE全稱Rancher Kubernetes Engine,是一個快速的,多功能的 Kubernetes 安裝工具。通過RKE,我們可以快速的安裝一個高可用K8S集群。RKE 支持多種操作系統(tǒng),包括 MacOS、Linux 和 Windows。
K8S原生安裝需要的先決條件較多,比如說需要預(yù)安裝kubeadm,kubectl,配置網(wǎng)絡(luò)等一系列繁瑣的工作。而使用RKE安裝k8s,基本上只要docker版本是當(dāng)前RKE版本支持的即可。
Rancher簡介
Rancher 是為使用容器的公司打造的容器管理平臺。Rancher 簡化了使用 Kubernetes 的流程,開發(fā)者可以隨處運行 Kubernetes(Run Kubernetes Everywhere),滿足 IT 需求規(guī)范,賦能 DevOps 團(tuán)隊。
版本選擇
| RKE | 1.3.12 | GitHub - rancher/rke: Rancher Kubernetes Engine (RKE), an extremely simple, lightning fast Kubernetes distribution that runs entirely within containers. | 2022-06-16,1.3.12 released |
| k8s | 1.23.7 | GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management | 2022-05-26,1.23.7?released |
| helm | v3.9.2 | Releases · helm/helm · GitHub | |
| rancher | 2.6.6 | GitHub - rancher/rancher: Complete container management platform |
參考:
Rancher文檔 | K8S文檔 | Rancher | Rancher文檔
環(huán)境初始化
hostname設(shè)置
sudo?hostnamectl?set-hostname?ubuntu24 查看 hostnamectl 修改后需要將/etc/hosts文件更新 ubuntu24?127.0.0.1修改/etc/hosts文件,所有節(jié)點
192.168.43.23?ubuntu23 192.168.43.24?ubuntu24 192.168.43.26?ubuntu26 192.168.43.27?ubuntu27 192.168.43.28?ubuntu28 192.168.43.29?ubuntu29 192.168.43.30?ubuntu30 192.168.43.31?ubuntu31 192.168.43.24?k8s-test.com禁用swap
臨時禁用swap
sudo?swapoff?-a查看swap是否關(guān)閉
free?-h永久禁用
sudo?sed?-ri?'s/.*swap.*/#&/'?/etc/fstab手動把有swap相關(guān)配置的行注釋也是可以,ubuntu18的話其實就一行 #UUID=07389530-1861-4a4b-b4fc-ad03d69f59f4?noneswapsw0?0ssh免密互登錄
確保所有主機(jī)ssh免密可互通,保證rke節(jié)點可以免密碼登錄其它節(jié)點即可。
ssh-keygen ssh-copy-id?kangming@192.168.43.28內(nèi)核參數(shù)調(diào)整
確保以下參數(shù)值為1
net.bridge.bridge-nf-call-iptables=1可以通過以下指令查看
#查看所有內(nèi)核參數(shù) sudo?sysctl?-a#過濾 sudo?sysctl?-a|grep?net.bridge.bridge-nf-call-iptables如果不是1,執(zhí)行下面的設(shè)置指令
sysctl?-w?net.bridge.bridge-nf-call-iptables=1關(guān)閉防火墻
sudo?ufw?disable部署架構(gòu)圖
資源規(guī)劃
| 192.168.43.24 | 1核/2G | nginx負(fù)載 |
| 192.168.43.26 | 1核/2G | kubernetes node1 |
| 192.168.43.27 | 1核/2G | kubernetes node2 |
| 192.168.43.28 | 1核/2G | kubernetes node3 |
| 192.168.43.29 | 1核/2G | rancher-agent |
| 192.168.43.30 | 1核/2G | rancher-agent |
| 192.168.43.31 | 1核/2G | rancher-agent |
安裝RKE1.3.12&高可用k8s集群
RKE在26 nginx負(fù)載均衡節(jié)點進(jìn)行安裝。
下載最新穩(wěn)定版本RKE(Rancher Kubernetes Engine),下載地址:Release Release v1.3.12 · rancher/rke · GitHub
下載
https://github.com/rancher/rke/releases/download/v1.3.12/rke_linux-amd64注意每個版本的RKE對k8s版本的支持都是有限的,當(dāng)前版本(V1.3.12)支持的k8s版本列表如下:
| v1.23.7-rancher1-1?(Default) |
| v1.22.10-rancher1-1 |
| v1.21.13-rancher1-1 |
| v1.20.15-rancher1-4 |
| v1.19.16-rancher1-6 |
| v1.18.20-rancher1-3 |
rancher也使用當(dāng)前最新版本:Release Release v2.6.6 · rancher/rancher · GitHub
安裝
sudo?mv?rke_linux-amd64?/usr/local/bin/rke?&&?chmod?+x?/usr/local/bin/rke查看 rke版本
rke?--versioncluster.yml
nodes:- address: 192.168.43.26internal_address: 192.168.43.26user: kangmingrole: [controlplane,worker,etcd]- address: 192.168.43.27internal_address: 192.168.43.27user: kangmingrole: [controlplane,worker,etcd]- address: 192.168.43.28internal_address: 192.168.43.28user: kangmingrole: [controlplane,worker,etcd]創(chuàng)建一個名為 cluster.yml 的 Kubernetes 集群配置文件。在后續(xù)步驟中,當(dāng)使用 RKE 命令設(shè)置集群時,它將使用此文件在節(jié)點上安裝 Kubernetes。 ??
RKE適配了高可用集群,您可以在 cluster.yml 文件中配置多個 controlplane 節(jié)點。RKE 會把 master 節(jié)點的組件部署在所有被列為 controlplane 的節(jié)點上,同時把 kubelets 的默認(rèn)連接地址配置為 127.0.0.1:6443 。這個地址是nginx-proxy請求所有 master 節(jié)點的地址。創(chuàng)建高可用集群需要指定兩個或更多的節(jié)點作為 controlplane 。 RKE使用集群配置文件 cluster.yml 規(guī)劃集群中的節(jié)點,例如集群中應(yīng)該包含哪些節(jié)點,如何部署 Kubernetes。您可以通過該文件修改很多集群配置選項。
如果您的節(jié)點具有公共和內(nèi)部地址,建議設(shè)置 internal_address: 這樣 Kubernetes 會將其用于集群內(nèi)通信。RKE需要通過 SSH 連接到每個節(jié)點,并且它將在默認(rèn)位置 ~/.ssh/id_rsa 中尋找私鑰。如果您的默認(rèn)私鑰與節(jié)點的私鑰不在同一個位置,則還需要為該節(jié)點配置 ssh_key_path 選項 根據(jù)官網(wǎng)列舉了幾個RKE節(jié)點選項:
| address | 是 | 公用 DNS 或 IP 地址 |
| user | 是 | 可以運行 docker 命令的用戶 |
| role | 是 | 分配給節(jié)點的 Kubernetes 角色列表 |
| internal_address | 是 | 內(nèi)部集群流量的專用 DNS 或 IP 地址 |
| ssh_key_path | 否 | 用于對節(jié)點進(jìn)行身份驗證的 SSH 私鑰的路徑(默認(rèn)為~/.ssh/id_rsa) |
| cluster_name | 否 | 集群名稱,默認(rèn)集群名稱:local |
| ignore_docker_version | 否 | 在運行 RKE 前是否執(zhí)行 Docker 版本檢測,可選值為true和false,默認(rèn)值為false |
當(dāng)前rke版本需要的docker鏡像如下,可保存離線鏡像備用。所有需要的鏡像可以查看啟動rke目錄下的cluster.rkestate文件。
方便起見,將當(dāng)前rke版本所有鏡像保存到一個離線鏡像中,然后導(dǎo)入到需要的節(jié)點中。
docker?save?-o?rke1.3.2-rancherk8s1.23.7.tar?rancher/mirrored-coreos-etcd:v3.5.3?\ rancher/rke-tools:v0.1.80?\ rancher/mirrored-k8s-dns-kube-dns:1.21.1?\ rancher/mirrored-k8s-dns-dnsmasq-nanny:1.21.1?\ rancher/mirrored-k8s-dns-sidecar:1.21.1?\ rancher/mirrored-cluster-proportional-autoscaler:1.8.5?\ rancher/mirrored-coredns-coredns:1.9.0?\ rancher/mirrored-k8s-dns-node-cache:1.21.1?\ rancher/hyperkube:v1.23.7-rancher1?\ rancher/mirrored-coreos-flannel:v0.15.1?\ rancher/flannel-cni:v0.3.0-rancher6?\ rancher/mirrored-calico-node:v3.22.0?\ rancher/mirrored-calico-cni:v3.22.0?\ rancher/mirrored-calico-kube-controllers:v3.22.0?\ rancher/mirrored-calico-ctl:v3.22.0?\ rancher/mirrored-calico-pod2daemon-flexvol:v3.22.0?\ rancher/mirrored-flannelcni-flannel:v0.17.0?\ rancher/mirrored-calico-pod2daemon-flexvol:v3.22.0?\ weaveworks/weave-kube:2.8.1?\ weaveworks/weave-npc:2.8.1?\ rancher/mirrored-pause:3.6?\ rancher/nginx-ingress-controller:nginx-1.2.1-rancher1?\ rancher/mirrored-nginx-ingress-controller-defaultbackend:1.5-rancher1?\ rancher/mirrored-ingress-nginx-kube-webhook-certgen:v1.1.1?\ rancher/mirrored-metrics-server:v0.6.1?\ noiro/cnideploy:5.1.1.0.1ae238a?\ noiro/aci-containers-host:5.1.1.0.1ae238a?\ noiro/opflex:5.1.1.0.1ae238a?\ noiro/openvswitch:5.1.1.0.1ae238a?\ noiro/aci-containers-controller:5.1.1.0.1ae238a?\ noiro/gbp-server:5.1.1.0.1ae238a相關(guān)節(jié)點導(dǎo)入鏡像后執(zhí)行
執(zhí)行RKE
rke?up這條命令默認(rèn)cluster.yml已經(jīng)保存在了您運行命令所處的路徑下.如果配置文件起了其它名字,則像如下這樣啟動
rke?up?--config?./rancher-cluster.yml上述命令可能出現(xiàn)如下錯誤,重新執(zhí)行一下rke up即可。
FATA[0198]?Failed?to?get?job?complete?status?for?job?rke-coredns-addon-deploy-job?in?namespace?kube-system集群清理,需要清除集群時,執(zhí)行
rke?remove#刪除所有容器上面的rke?remove不會清理所有的節(jié)點容器,如有需要可執(zhí)行下面的指令把所有容器清理,會刪除所有容器,刪除請謹(jǐn)慎 docker?rm?-f?$(docker?ps?-aq)kubectl安裝&測試K8S
把kube_config_cluster.yml文件備份,然后放到所有工作節(jié)點中,然后配置環(huán)境變量。
配置環(huán)境變量
vim?.bashrc export?KUBECONFIG=/home/kangming/rancher/kube_config_cluster.yml source?.bashrc設(shè)置kube_config_cluster.yml文件的權(quán)限為當(dāng)前用戶讀寫
sudo?chmod?600?kube_config_cluster.yml在幾個工作節(jié)點中安裝kubectl
科學(xué)上網(wǎng)通過本地瀏覽器下載下面的文件,然后放到所有工作節(jié)點中
https://packages.cloud.google.com/apt/doc/apt-key.gpg上傳到服務(wù)器后執(zhí)行
sudo?apt-key?add?/home/kangming/apt-key.gpg添加源,然后更新apt,下載kebectl
sudo?vi?/etc/apt/sources.list deb?https://mirrors.aliyun.com/kubernetes/apt?kubernetes-xenial?main sudo?apt-get?update下載 與查看
sudo?apt-get?install?-y?kubectl kubectl?get?nodes打印如下(所有節(jié)點都ready即可)
kangming@ubuntu26:~$?kubectl?get?nodes NAMESTATUS?ROLESAGE?VERSION 192.168.43.26?Readycontrolplane,etcd,worker?71m?v1.23.7 192.168.43.27?Readycontrolplane,etcd,worker?71m?v1.23.7 192.168.43.28?Readycontrolplane,etcd,worker?71m?v1.23.7檢查所有需要啟動的pod,都處于running或 completed狀態(tài)。
kubectl?get?pods?--all-namespacesNAMESPACE?NAMEREADY?STATUSRESTARTS?AGE ingress-nginx?nginx-ingress-controller-tnsn41/1?Running?030s ingress-nginx?nginx-ingress-controller-tw2ht1/1?Running?030s ingress-nginx?nginx-ingress-controller-v874b1/1?Running?030s kube-system?canal-jp4hz?3/3?Running?030s kube-system?canal-z2hg8?3/3?Running?030s kube-system?canal-z6kpw?3/3?Running?030s kube-system?kube-dns-7588d5b5f5-sf4vh?3/3?Running?030s kube-system?kube-dns-autoscaler-5db9bbb766-jz2k61/1?Running?030s kube-system?metrics-server-97bc649d5-4rl2q1/1?Running?030s kube-system?rke-ingress-controller-deploy-job-bhzgm?0/1?Completed?030s kube-system?rke-kubedns-addon-deploy-job-gl7t40/1?Completed?030s kube-system?rke-metrics-addon-deploy-job-7ljkc0/1?Completed?030s kube-system?rke-network-plugin-deploy-job-6pbgj?0/1?Completed?030s總結(jié)
以上是生活随笔為你收集整理的RKE部署高可用Kubernetes集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太网100Mhz频率为什么可以达到带宽
- 下一篇: python图片转手绘_通过Python