欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用kubeadm部署多節(jié)點(diǎn)集群

 更新時間:2022年04月06日 09:14:32   作者:癡者工良  
這篇文章介紹了使用kubeadm部署多節(jié)點(diǎn)集群的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

命令行工具

在 kubernetes 中,主要有三個日常使用的工具,這些工具使用 kube 前綴命名,這三個工具如下:

  • kubeadm:用來初始化集群的指令,能夠創(chuàng)建集群已經(jīng)添加新的節(jié)點(diǎn)??捎闷渌渴鸸ぞ咛娲?。
  • kubelet:在集群中的每個節(jié)點(diǎn)上用來啟動 Pod 和容器等,每個節(jié)點(diǎn)必須有,相對于節(jié)點(diǎn)與集群的網(wǎng)絡(luò)代理。
  • kubectl:用來與集群通信/交互的命令行工具,與 kubernetes API-Server 通訊,是我們操作集群的客戶端。

kubelet、kubectl,kubelet 負(fù)責(zé)集群中節(jié)點(diǎn)間的通訊,kubectl 供用戶輸入命令控制集群,而且 kubeadm 則是創(chuàng)建集群、添加減少節(jié)點(diǎn)的工具。

安裝命令行工具

命令行工具是每個節(jié)點(diǎn)都需要安裝的, kubectl、kubelet 兩個是必需的組件,而 kubeadm 則可以被代替。kubeadm 是 Kubenetes 官方推薦的部署工具,但由于網(wǎng)絡(luò)等各方面原因,中文社區(qū)中也開發(fā)了一些替代項目,例如 Kubesphere(https://kubesphere.com.cn/),可在國內(nèi)部署 Kubernetes,省去網(wǎng)絡(luò)問題。

通過軟件倉庫安裝

下面介紹如何 通過 Google 的源下載安裝工具包。

更新 apt 包索引并安裝使用 Kubernetes apt 倉庫所需要的包:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

下載 Google Cloud 公開簽名秘鑰:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

添加 Kubernetes apt 倉庫:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

注:如果是國內(nèi)服務(wù)器,請忽略以上兩步,使用以下命令解決:

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

更新 apt 包索引,安裝 kubelet、kubeadm 和 kubectl,并鎖定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

執(zhí)行命令檢查是否正常:

kubeadm --help

不同操作系統(tǒng)

只是這里介紹一下 ubuntu 和 centos 不同的安裝方法,已經(jīng)通過前面的安裝方法安裝好,則不需要理會這一小節(jié)。

Ubuntu 和 Debain 等系統(tǒng)可以使用以下命令通過軟件倉庫安裝:

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

Centos、RHEL 等系統(tǒng)可以使用以下命令通過軟件倉庫安裝:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl

集群管理

創(chuàng)建 kubernetes 集群

Kubeadm 是一個創(chuàng)建管理工具,主要提供了 kubeadm init 和 kubeadm join 兩個命令,作為創(chuàng)建 Kubernetes 集群的 “快捷途徑” 的最佳實踐。

Kubernetes 集群由 Master 和 Worker 兩種節(jié)點(diǎn)組成,Master 節(jié)點(diǎn)負(fù)責(zé)控制集群所有的節(jié)點(diǎn)。

注意,本教程集群中的節(jié)點(diǎn)應(yīng)當(dāng)都是內(nèi)網(wǎng)可互通的服務(wù)器,這些服務(wù)器之間可以通過內(nèi)網(wǎng)相互訪問。如果是服務(wù)器之間通過公網(wǎng)相互通訊的,操作方法請查詢其它教程。

1,創(chuàng)建 Master

執(zhí)行 hostname -i 查看此 node 的 ip。

我們初始化一個 API Server 服務(wù),綁定地址為 192.168.0.8(按照你的ip改)。此步驟創(chuàng)建了一個 master 節(jié)點(diǎn)。

注:可以直接使用 kubeadm init,它會自動使用默認(rèn)網(wǎng)絡(luò)ip。

kubeadm init
# 或 kubeadm init --apiserver-advertise-address 192.168.0.8
# 或 kubeadm init --apiserver-advertise-address $(hostname -i)

部署失敗,可以參考下面兩個命令,查看失敗原因。

systemctl status kubelet
journalctl -xeu kubelet

常見與 Docker 有關(guān)的錯誤可參考: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

完成后,會提示一些信息,在提示的內(nèi)容中找到:

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
    --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

保存這段信息下來備用,后面加入節(jié)點(diǎn)時需要使用到。

如果有提示 Alternatively, if you are the root user, you can run:則你還需要執(zhí)行下面的命令。

export KUBECONFIG=/etc/kubernetes/admin.conf

[Info] 提示

admin.conf 是連接 Kubernetes 的認(rèn)證文件,通過此文件才能連接到 kubernetes,kubectl 也需要這個文件;在 Linux 中,使用 KUBECONFIG 環(huán)境變量知道認(rèn)證文件的所在。

Linux 中每個用戶的環(huán)境變量是不同的,如果切換了用戶,則也需要設(shè)置 KUBECONFIG 環(huán)境變量;如果要在別的節(jié)點(diǎn)上連接集群,則可以把這個文件復(fù)制過去。

后面的操作都需要 admin.conf 文件,否則會報 The connection to the server localhost:8080 was refused - did you specify the right host or port? 。

由于 export 的環(huán)境變量不能持久化,請打開 ~/.bashrc 文件,把這個命令加到文件最后面。

[Info] 提示

為了保護(hù) /etc/kubernetes/admin.conf,避免直接指向,建議每個用戶復(fù)制一次此文件到用戶目錄下,其命令如下:

mkdir -p $HOME/.kube
cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2,初始化網(wǎng)絡(luò)

這一步不是必需的,不過一般來說,部署 Kubernetes 會配置網(wǎng)絡(luò),否則會節(jié)點(diǎn)之間不能相互訪問,讀者可以跟著做一次,在后面的章節(jié)中我們在一探究竟。

通過遠(yuǎn)程配置文件初始化網(wǎng)絡(luò),需要從第三方拉取一個 yaml 文件。

kubectl apply  -f  "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"  --namespace=kube-system
#  --namespace=kube-system 表示插件放到 kube-system 命名空間中運(yùn)行

成功的話會提示:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created

我們也可以手動配置,執(zhí)行 kubectl version 查看版本號,找到 GitVersion:v1.21.1 ,替換 yaml 文件的地址 https://cloud.weave.works/k8s/net?k8s-version=v1.21.1,然后執(zhí)行 kubectl apply -n kube-system -f net.yaml 即可。

3,加入集群

前面已經(jīng)創(chuàng)建了 Master 節(jié)點(diǎn),接下來將另一個服務(wù)器以 Worker 節(jié)點(diǎn)的方式加入集群中。如果讀者只有一臺服務(wù)器,則可以跳過這個步驟。

當(dāng)節(jié)點(diǎn)加入 kubeadm 初始化的集群時,雙方需要建立雙向信任,分為發(fā)現(xiàn)(Worker信任Master) 和 TLS 引導(dǎo)(Master信任待加入Worker)兩部分。目前有兩種加入方式,一種是通過令牌加入,一種是通過 kubeconfig 文件加入。

格式:

kubeadm join --discovery-token abcdef.xxx {IP}:6443 --discovery-token-ca-cert-hash sha256:xxx
kubeadm join--discovery-file file.conf

在第二個節(jié)點(diǎn)中,使用之前備份好的命令,直接執(zhí)行,加入集群,格式如下命令所示

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
    --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

復(fù)制粘貼時,要注意,可能會由于 \ 換行符,導(dǎo)致粘貼時,多了一個小數(shù)點(diǎn),導(dǎo)致報錯。

粘貼出錯

可能碰到的問題

查看 docker 版本:yum list installed | grep docker 和 docker version。

如果部署過程中出現(xiàn) failed to parse kernel config: unable to load kernel module,也說明了 docker 版本太高,需要降級。

如果服務(wù)器裝了 dnf,那么降級 docker 版本的命令:

dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
dnf -y install dnf-plugins-core
dnf install docker-ce-18.06.3.ce-3.el7 docker-ce-cli containerd.io

不行的話就按照 https://docs.docker.com/engine/install/centos/ 降級,或者自行按照其它方法處理。

注意,docker version 會看到 client 和 server 版本,兩者的版本號可能不一致。

刪除節(jié)點(diǎn)

在生產(chǎn)環(huán)境中,由于節(jié)點(diǎn)上已經(jīng)部署著服務(wù),因此直接刪除節(jié)點(diǎn),可能會導(dǎo)致嚴(yán)重的故障問題。因此需要移除一個節(jié)點(diǎn)時,首先要在此節(jié)點(diǎn)上驅(qū)逐所有 Pods,Kubernetes 會自動將此節(jié)點(diǎn)上的 Pod 轉(zhuǎn)移到其它節(jié)點(diǎn)上部署(第三章會講)。

獲取集群中的所有節(jié)點(diǎn),找到需要驅(qū)逐的節(jié)點(diǎn)名稱。

kubectl get nodes

驅(qū)逐此節(jié)點(diǎn)上所有的 Pod:

kubectl drain {node名稱}

雖然驅(qū)逐了節(jié)點(diǎn)上所有的服務(wù),但是節(jié)點(diǎn)依然在集群中,只是 Kubernetes 不會再部署 Pod 到此節(jié)點(diǎn)上。如果需要恢復(fù)此節(jié)點(diǎn),允許繼續(xù)部署 Pod,可使用:

kubectl uncordon {節(jié)點(diǎn)名稱}

關(guān)于驅(qū)逐,后面的章節(jié)會學(xué)習(xí)到。

注:驅(qū)逐 Pod,并一定能夠驅(qū)逐所有 Pod,有些 Pod 可能不會被清除。

最終刪除此節(jié)點(diǎn):

kubectl delete node {節(jié)點(diǎn)名稱}

集群刪除了此節(jié)點(diǎn)后,節(jié)點(diǎn)上還保留著一些數(shù)據(jù),可以繼續(xù)清除環(huán)境。

清除環(huán)境

如果步驟做錯了想重來,或者移除節(jié)點(diǎn)需要清除環(huán)境,可以執(zhí)行 kubeadm reset [flags] 命令。

注:只執(zhí)行 kubeadm reset 命令無效。

[flags] 有四種類型:

preflight              Run reset pre-flight checks
update-cluster-status  Remove this node from the ClusterStatus object.
remove-etcd-member     Remove a local etcd member.
cleanup-node           Run cleanup node.

我們需要執(zhí)行:

kubeadm reset cleanup-node 
kubeadm reset

即可在當(dāng)前服務(wù)器上清除 Kubernetes 殘留的 容器或者其它數(shù)據(jù)。

到此這篇關(guān)于使用kubeadm部署多節(jié)點(diǎn)集群的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Prometheus?Operator架構(gòu)介紹

    Prometheus?Operator架構(gòu)介紹

    這篇文章主要為大家介紹了Prometheus?Operator架構(gòu)介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • kubernetes存儲之GlusterFS集群詳解

    kubernetes存儲之GlusterFS集群詳解

    最近工作中用到了GlusterFS作為Kubernetes的存儲,這篇文章主要給大家介紹了關(guān)于kubernetes存儲之GlusterFS集群的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • k8s編排之Deployment知識點(diǎn)詳解

    k8s編排之Deployment知識點(diǎn)詳解

    這篇文章主要為大家介紹了k8s編排之Deployment知識點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Kubernetes中使用臨時容器進(jìn)行故障排查的方法

    Kubernetes中使用臨時容器進(jìn)行故障排查的方法

    在使用Kubernetes時,用戶常常會遇到一些錯誤和迷惑,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中使用臨時容器進(jìn)行故障排查的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • k8s編排之StatefulSet知識點(diǎn)詳解一

    k8s編排之StatefulSet知識點(diǎn)詳解一

    這篇文章主要為大家介紹了k8s編排之StatefulSet知識點(diǎn)的部分詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • kubernetes認(rèn)證鑒權(quán)內(nèi)容淺析

    kubernetes認(rèn)證鑒權(quán)內(nèi)容淺析

    這篇文章主要為大家介紹了kubernetes認(rèn)證鑒權(quán)內(nèi)容淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • k8s編排之DaemonSet知識點(diǎn)詳解

    k8s編排之DaemonSet知識點(diǎn)詳解

    這篇文章主要為大家介紹了k8s編排之DaemonSet知識點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • k8s部署rabbitmq集群的方式

    k8s部署rabbitmq集群的方式

    本次部署方式為setafulset的方式部署rabbitmq集群,使用svc的無頭服務(wù),本次涉及使用到的服務(wù)有setafulset、secret、configmap、service、pv、pvc、sa,在rabbitmq的官網(wǎng)中使用的是operator的方式,感興趣的朋友一起看看吧
    2024-03-03
  • 青龍面板拉庫解決沒有或丟失依賴can‘t?find?module的保姆級教程(附青龍面板腳本倉庫)

    青龍面板拉庫解決沒有或丟失依賴can‘t?find?module的保姆級教程(附青龍面板腳本倉庫)

    這篇文章主要介紹了青龍面板拉庫解決沒有或丟失依賴can‘t?find?module的保姆級教程(附青龍面板腳本倉庫),需要的朋友可以參考下
    2022-05-05
  • 使用kubeadm部署多節(jié)點(diǎn)集群

    使用kubeadm部署多節(jié)點(diǎn)集群

    這篇文章介紹了使用kubeadm部署多節(jié)點(diǎn)集群的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論