溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在CentOS上安裝Kubernetes集群

發(fā)布時間:2021-09-10 07:39:04 來源:億速云 閱讀:134 作者:chen 欄目:系統(tǒng)運(yùn)維

本篇內(nèi)容介紹了“如何在CentOS上安裝Kubernetes集群”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1.Kubernetes主機(jī)環(huán)境預(yù)設(shè)

Kubernete集群的主機(jī)生產(chǎn)環(huán)境也有多種選擇,如下:

  • 方案一:   三臺或者五臺 Master 節(jié)點,分別安裝全角色:ETCD , Control Plane ;其他節(jié)點為容器計算機(jī)節(jié)點,分別安裝角色: worker;

  • 方案二:  三臺節(jié)點分別安裝角色:ETCD;兩臺節(jié)點分別安裝角色:Control Plane;其他節(jié)點為容器計算機(jī)節(jié)點,分別安裝角色: worker;

但我現(xiàn)在手上只有一臺7代i7的筆記本,雖有16G內(nèi)存,但這雙核四線程真不夠看啊,單機(jī)和minikube安裝先不考慮,等小型實驗集群實驗好后再逐個實現(xiàn)。我的筆記本是安裝的fedora,使用kvm虛擬機(jī)虛擬了三個主機(jī)每個主機(jī)也就1vcpu+1G內(nèi)存,分別安裝一個master節(jié)點和兩個計算節(jié)點。
各個節(jié)點需要安裝的kubernetes組件如下:

  • 主節(jié)點:

    • kube-apiserver

    • kube-controller-manager

    • kube-scheduler

    • kube-proxy

    • pause

    • etcd

    • coredns

  • 從節(jié)點:

    • kube-proxy

    • pause

    • flannel(本次實驗選定的網(wǎng)絡(luò)插件)

1.2 設(shè)置時間同步

如chrony,配置文件/etc/chrony.conf(內(nèi)網(wǎng)需要配置時間服務(wù)器),服務(wù)啟動使用systemctl命令。建議無論內(nèi)網(wǎng)和能連接Internet的環(huán)境都為集群配置時間同步服務(wù)器。

1.3 配置DNS或者h(yuǎn)osts主機(jī)解析

在/etc/hosts文件中配置集群的IP和主機(jī)名解析(同時可以減少DNS的解析時延)

1.4 關(guān)閉防火墻

CentOS7上關(guān)閉防火墻

# systemctl stop firewalld.service

# systemctl disable firewalld.service

1.5 關(guān)閉SELinux

# setenforce 0

同時配置時/etc/selinux/config文件

# vim /etc/selinux/config
...
SELINUX=disable

或者

# sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux

1.6 禁用swap設(shè)備

Kubernetes 1.8 開始需要關(guān)閉系統(tǒng) Swap 交換分區(qū),如果不關(guān)閉,則無法啟動。
查看

# free -m

臨時關(guān)閉

# swapoff -a
# echo "vm.swappiness = 0" >> /etc/sysctl.conf

或者

# swapoff -a && sysctl -w vm.swappiness=0

同時編輯配置文件/etc/fstab進(jìn)行永久關(guān)閉,即注釋掛載swap設(shè)備的行。

注:本次實驗由于資源有限沒有關(guān)閉,但后續(xù)有解決方法(僅限于實驗環(huán)境)

1.7 啟用IPVS內(nèi)核模塊

kube-proxy 支持 iptables 和 ipvs,如果條件滿足,默認(rèn)使用 ipvs,否則使用 iptables。

cat <<EOF > /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/kubernetes.conf 或者 sysctl --system

由于 ipvs 已經(jīng)加入到了內(nèi)核的主干,所以為 kube-proxy 開啟 ipvs 的前提需要加載以下的內(nèi)核模塊:

  • ip_vs

  • ip_vs_rr

  • ip_vs_wrr

  • ip_vs_sh

  • nf_conntrack_ipv4

執(zhí)行以下腳本加載內(nèi)核

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

參考:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md

上面腳本創(chuàng)建了的/etc/sysconfig/modules/ipvs.modules文件,保證在節(jié)點重啟后能自動加載所需模塊。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已經(jīng)正確加載所需的內(nèi)核模塊。

接下來還需要確保各個節(jié)點上已經(jīng)安裝了 ipset 軟件包。 為了便于查看 ipvs 的代理規(guī)則,最好安裝一下管理工具 ipvsadm。

yum install ipset ipvsadm

可以使用ipvsadm檢查是否開啟ipvs,示例如下:

# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:443 rr persistent 10800
  -> 192.168.0.1:6443             Masq    1      1          0

如果以上前提條件如果不滿足,則即使 kube-proxy 的配置開啟了 ipvs 模式,也會退回到 iptables 模式。

2. 安裝程序包

采用docker作為容器運(yùn)行

2.1 配置運(yùn)行Docker

2.1.1 安裝必要的一些系統(tǒng)工具

# yum install -y yum-utils device-mapper-persistent-data lvm2

2.1.2 添加docker源

# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

可以采用國內(nèi)的鏡像加速服務(wù),參照kubernetes的官方文檔,這里使用阿里的鏡像在CentOS上的安裝作為說明(作此筆記的時候嘗試過華為、騰訊和電子科大的kubernetes好像版本沒有阿里的新,就暫時先用阿里的來做實驗了)。

2.1.3 更新并安裝 Docker-CE

# yum makecache fast
# yum -y install docker-ce

此處根據(jù)默認(rèn)是docker源文件的配置安裝的是最新穩(wěn)定版,但很有可能不能通過最新的kubernetes的認(rèn)證。因此,我們采用下面的方式來選擇安裝版本,特別是再生產(chǎn)環(huán)境中。
首先是查找倉庫中的版本:

# yum list docker-ce.x86_64 --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: branch, fastestmirror, langpacks
...
dockdr-ce.x86_64            18.09.9.ce-1.el7.centos            docker-ce-stable
...
docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
Available Packages

然后安裝指定版本的Docker-CE: (VERSION 例如上面的 18.09.9.ce.1-1.el7.centos)

# yum -y install docker-ce-18.09.9 docker-ce-cli-18.09.9

2.2 配置運(yùn)行Docker(離線環(huán)境)

如果是離線安裝可以使用Everthing的哪個ISO進(jìn)行依賴庫的安裝,但安裝的docker版本比較老,不過問題也不大。當(dāng)然也可以先在能夠聯(lián)網(wǎng)的主機(jī)上將需要的rpm打包下載,然后拷貝到離線環(huán)境中進(jìn)行安裝,關(guān)鍵過程如下:

2.2.1 使用yum命令下載離線包

# yum install docker-ce-18.09.9 docker-ce-cli-19.09.9 --downloadonly --downloaddir=/home/<your_account>/

2.2.2 在離線環(huán)境中安裝(按照如下順序進(jìn)行安裝)

1)安裝基礎(chǔ)的依賴包

# rpm -ivh checkpolicy-2.5-8.el7.x86_64.rpm
# rpm -ivh libcgroup-0.41-20.el7.x86_64.rpm
# rpm -ivh libseccomp-2.3.1-3.el7.x86_64.rpm
# rpm -ivh libsemanage-python-2.5-14.el7.x86_64.rpm
# rpm -ivh audit-libs-python-2.8.4-4.el7.x86_64.rpm
# rpm -ivh setools-libs-3.3.8-4.el7.x86_64.rpm
# rpm -ivh python-IPy-0.75-6.el7.noarch.rpm
# rpm -ivh policycoreutils-python-2.5-29.el7.x86_64.rpm

2)安裝docker-ce的軟件包

# rpm -ivh container-selinux-2.99-1.el7_6.noarch.rpm
# rpm -ivh containerd.io-1.2.6-3.3.el7.x86_64.rpm
# rpm -ivh docker-ce-cli-18.09.7-3.el7.x86_64.rpm
# rpm -ivh docker-ce-18.09.7-3.el7.x86_64.rpm

說明:
1.上述安裝的軟件包版本可能不一樣,根據(jù)安裝時的具體實際情況來,不必臺糾結(jié)。
2.在掛載Eerything的ISO作為軟件源的情況下,可以直接使用yum命令對拷貝到本地的container-selinux、containerd.io、docker-ce-cli、docker-ce的軟件包,安裝上述順序進(jìn)行安裝。
3.如果上述包在一個文件夾下可以簡單的使用"yum install <your_path>/*.rpm"來安裝、\"your_path\"是存放上述包的路經(jīng)。

2.3 Docker其它設(shè)置

2.3.1 創(chuàng)建目錄/etc/docker

# mkdir /etc/docker

2.3.2 創(chuàng)建daemon

# cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

2.3.3 創(chuàng)建服務(wù)目錄(官方文檔,還不知道干什么用)

# mkdir -p /etc/systemd/system/docker.service.d

修改docker服務(wù)文件(/usr/lib/systemd/system/docker.service),docker的iptables的FORWARD默認(rèn)策略為DROP,可能會影響集群通信,需要修改原有的docker.service文件,在"ExecStart=/usr/bin/docker"之后新增一行:

ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

2.3.4 開啟Docker服務(wù)

# systemctl daemon-reload
# systemctl start docker
# systemctl enable docker

2.4 配置運(yùn)行Kubernets

2.4.1 生成kubernets的倉庫配置文件

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2.4.2 安裝kubeadm、kubelet、kubectl

# yum install kubeadm kubelet kubectl

2.4.3(可選)拉取初始化所需組件

運(yùn)行鏡像列表命令獲取所需組件列表

#kubeadm config images list

運(yùn)行鏡像拉取命令直接獲取組件

# kubeadm config images pull

如果沒有改倉庫則默認(rèn)從k8s.gcr.io去獲取,國內(nèi)環(huán)境時獲取不到,因此采用一個變通的方法

# vim k8s-pull-images.sh

#!/bin/bash
REGISTRY=gcr.azk8s.cn/google-containers

images=(
  kube-apiserver:v1.15.3
  kube-controller-manager:v1.15.3
  kube-scheduler:v1.15.3
  kube-proxy:v1.15.3
  pause:3.1
  etcd:3.3.10
  coredns:1.3.1
)

for imageName in ${images[@]} ; do
  docker pull ${REGISTRY}/$imageName  
  docker tag ${REGISTRY}/$imageName k8s.gcr.io/$imageName  
  docker rmi ${REGISTRY}/$imageName
done

說明: REGISTRY還可以使用dockerhub中的鏡像,具體修改:REGISTRY=mirrorgooglecontainers。

其中組件包列表可以通過命令"kubeadm config images list"獲取。

# chmod +x k8s-pull-images.sh
# ./k8s-pull-images.sh

上述腳本保存執(zhí)行后可以通過"docker image list"查看結(jié)果。

2.4.4 kubeadm初始化master節(jié)點

初始化命令‘kubeadm’可以使用參數(shù)傳遞和yaml配置文件,測試實驗推薦第一種,生產(chǎn)部署推薦第二種。

1) 命令行參數(shù)進(jìn)行初始化
# kubeadm init --kubernetes-version="1.15.3" --pod-network-cidr="10.244.0.0/16"  --service-cidr="10.96.0.0/12" --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU --image-reporitory "gcr.azk8s.cn" --dry-run

其中

  • --kubernete-version="1.15.3"指定了kubernete的具體版本,默認(rèn)的“stable-1”,這里是1.15.0,不符合規(guī)定需要修改成當(dāng)前的版本,此處時1.15.3(查詢命令"rpm -qa|grep kubeadm")。

  • --pod-network-cidr="10.244.0.0/16"是自定義的Pod的網(wǎng)絡(luò),通常與要部署的網(wǎng)絡(luò)插件(如:flannel和calico)保持一致,此處使用的時flannel,flannel的默認(rèn)地址為:10.244.0.0/16,calico的默認(rèn)地址為:192.168.0.0/16。

  • --ignore-preflight-errors=,這里有兩項一個是Swap,一個是NumCPU,他們分別忽略了swap不為0的報錯和CPU沒有大于2的報錯。因為這里我用的是虛擬機(jī),只有1G的內(nèi)存,因此沒有關(guān)閉swap;同時虛擬機(jī)之分配了一個vCPU。若未禁用swap,則需要編輯kubelet的配置文件/etc/sysconfig/kubelet,忽略swap啟用狀態(tài)錯誤。

KUBELET_EXTRA_ARGS="--fail-swap-on=false"
  • --server-cidr指定service分配的網(wǎng)絡(luò)地址,由kubernete管理,默認(rèn)地址為10.96.0.0/12。

  • --image-reporitory指定組件倉庫地址代替默認(rèn)的"k8s.gcr.io",比如此處國內(nèi)的gcr.azk8s.cn。

  • --dry-run 只是試運(yùn)行看有沒有什么錯誤,并沒有實際初始化。

最后顯示初始化結(jié)果

...
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.122.10:6443 --token kt9uzn.793zkkepgvup3jg8 \
    --discovery-token-ca-cert-hash sha256:1b00c8c653c5573ff89c134bd1e62a54f3640813b0e26b79f387fddb402b0b48
2) 命令行參數(shù)進(jìn)行初始化(離線環(huán)境)

1.打包拉取的kubeadm初始化所需要的鏡像
所需的命令和格式

docker save -o <path for generated tar file> <image name></image>

需要打包的組件列表(部署時的具體版本以實際部署時的版本為標(biāo)準(zhǔn),注意檢查)

  • kube-apiserver:v1.15.3

  • kube-controller-manager:v1.15.3

  • kube-scheduler:v1.15.3

  • kube-proxy:v1.15.3

  • pause:3.1

  • etcd:3.3.10

  • coredns:1.3.1

可以單個打包,也可以按照節(jié)點類型進(jìn)行批量打包,單個打包可以應(yīng)對多種架構(gòu)的部署(主要時etcd從master分離)
單個打包舉例(以打包kube-apiserver為例):

docker save -o kube-apiserver:v1.15.3 k8s.gcr.io/kube-apiserver:v1.15.3

批量打包master(含etcd)

docker save -o k8s-master-1.15.3.tar\
 k8s.gcr.io/kube-apiserver:v1.15.3\
 k8s.gcr.io/kube-controller-manager:v1.15.3\
 k8s.gcr.io/kube-scheduler:v1.15.3\
 k8s.gcr.io/kube-proxy:v1.15.3\
 k8s.gcr.io/pause:3.1\
 k8s.gcr.io/etcd:3.3.10\
 k8s.gcr.io/coredns:1.3.1

批量打包node

docker save -o k8s-node-1.15.3.tar\
 k8s.gcr.io/kube-proxy
 k8s.gcr.io/pause

加載初始化所需要的鏡像

docker load -i k8s-master-1.15.3.tar
或
docker load -i kube-apiserver:v1.15.13
docker load -i kube-controller:v1.15.3
docker load -i kube-scheduler:v1.15.3
docker load -i kube-proxy:v1.15.3
docker load -i pause:3.3
docker load -i etcd:3.3.10
docker load -i coredns:1.3.1

然后使用kubeadm init進(jìn)行初始化(略)

3) 使用配置文件進(jìn)行初始化

獲取配置文件

kubeadm config print init-defaults  > kubeadm-init-config.yaml

修改配置文件(檢查以下部分)

...
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
...
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
...
kind: ClusterConfiguration
kubernetesVersion: v1.16.2
networking:
  dnsDomain: cluster.test
  serviceSubnet: 10.96.0.0/16
  podSubnet: 10.244.0.0/16
...
kind: KubeProxyConfiguration
imageRepository: gcr.k8s.io
kubeProxy:
  config:
    featureGates:
      SupportIPVSProxyMode: true
    mode: ipvs

使用命令進(jìn)行初始化

kubeadm init -f kubeadm-init-config.yaml
4) 使用配置文件進(jìn)行初始化(離線環(huán)境)

離線環(huán)境使用配置文件進(jìn)行初始化與在線環(huán)境一樣,只是還是要先加載初始化所需的鏡像。

參考:

  • kubeadm-config.yaml配置語法參考: https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2

  • kubeadm-config.yaml配置主節(jié)點:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/

  • kube-proxy開啟ipvs: https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md

  • kubelet的配置示例參考: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#configure-kubelets-using-kubeadm

補(bǔ)充說明:

  1. kubeadm-config.yaml組成部署說明:

    • InitConfiguration: 用于定義一些初始化配置,如初始化使用的token以及apiserver地址等

    • ClusterConfiguration:用于定義apiserver、etcd、network、scheduler、controller-manager等master組件相關(guān)配置項

    • KubeletConfiguration:用于定義kubelet組件相關(guān)的配置項

    • KubeProxyConfiguration:用于定義kube-proxy組件相關(guān)的配置項

可以看到,在默認(rèn)的kubeadm-config.yaml文件中只有InitConfiguration、ClusterConfiguration 兩部分。我們可以通過如下操作生成另外兩部分的示例文件:

# 生成KubeletConfiguration示例文件 
kubeadm config print init-defaults --component-configs KubeletConfiguration
# 生成KubeProxyConfiguration示例文件 
kubeadm config print init-defaults --component-configs KubeProxyConfiguration
  1. kubeadm初始化時kubernete認(rèn)可的docker版本問題

[WARNING SystemVerification]: this docker version is not on the list of validated version: 19.01.1. Latest validated version: 18.06

以上版本根據(jù)自身環(huán)境的報告版本有所不同,可以參看kubernetes在git倉庫中的changelog文件來確定支持的docker本版,然后根據(jù)命令

# yum list docker-ce.x86_64 --showduplicates | sort -r

獲取版本列表,然后選取特定的版本進(jìn)行安裝

sudo yum -y install docker-ce-[VERSION]
  1. kubeadm初始化時kubelet沒有設(shè)置自啟動

[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'

解決:執(zhí)行自啟動命令'systemctl enable kubelet.service'

  1. kubeadm初始化時沒有禁用swap:

[ERROR Swap]: running with swap on is not enabled, please disable swap
[preflight] If you know what you are doing, you can make a check non-fatal with '--ignore-preflight-errors=...'

解決:可以在kubeadm的命令末尾加上參數(shù)'--ignore-preflight-errors=Swap'。

  1. 查看初始化后的kubeadm的配置

kubeadm config view
4) 初始化后續(xù)操作

接下來按照上述初始化結(jié)果的提示后續(xù)還需要為當(dāng)前master節(jié)點的用戶準(zhǔn)備kubectl環(huán)境和安裝網(wǎng)絡(luò)

  1. 創(chuàng)建文件夾

$ mkdir -p ~/.kube
$ cp /etc/kubernetes/admin.conf ~/.kube/config
  1. 安裝網(wǎng)絡(luò)插件

語法:"kubectl apply -f [podnetwork].yaml"

此處我們使用的flannel(由coreos研發(fā))。在github的頁面上有具體的安裝說明,地址https://github.com/coreos/flannel。

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果是離線安裝可以先下載打包flannel鏡像及kube-flannel.yml文件,然后使用kubectl安裝。具體如下:

下載flannel

docker pulll query.io/coreos/flannel

打包flannel并保存到本地

docker save query.io/coreos/flannel -o <your_save_path>/flannel:0.11.0-amd.tar

裝載flannel鏡像

docker load -i <your_save_path>/flannel:0.11.0-amd

下載kube-flannel.yml文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

安裝flannel

kubectl apply -f kube-flannel.yml

而后可以使用命令"kubectl get pods -n kube-system"進(jìn)行查看。

2.4.5 初始化計算節(jié)點

計算結(jié)點的初始化和主節(jié)點類似,執(zhí)行相同的命令,在安裝完kubeadm、kubelet、kubectl后,設(shè)置kubelet服務(wù)自啟動"systemctl enable kubelet",然后執(zhí)行主節(jié)點初始化后的的提示命令加入機(jī)群。

# kubeadm join 192.168.122.10:6443 --token i75tol.nbptvcjp8x8yx2lo \
    --discovery-token-ca-cert-hash sha256:eeb70912425f575b47d9b0a2830feb18b7d1ef2807bf454656b2903f04cc472c

加入的過程可能需要點時間,因為加入的節(jié)點需要從主節(jié)點中拉取所需要的鏡像,所需組件如下:

  • kubeproxy

  • pause

  • 網(wǎng)絡(luò)鏡像(此處用的時flannel)

離線環(huán)境(沒有私有庫的情況下)需要自己手動加載上述三個鏡像的tar包,命令:docker load -i <導(dǎo)出的tar包>(tar由docker save -o導(dǎo)出)。使用命令"docker image list"可以查看已有組件。

忘記加入命令或者token的情況
默認(rèn)情況下生成加入集群的token有效時間為24小時,使用下面的命令可以查看現(xiàn)有的token

kubeadm token list

如果沒有失效則生成現(xiàn)有token的SHA256的值,命令如下

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

然后使用kubeadm join 加入,舉例如下:

kubeadm join 10.167.11.153:6443 --token o4avtg.65ji6b778nyacw68 --discovery-token-ca-cert-hash sha256:2cc3029123db737f234186636330e87b5510c173c669f513a9c0e0da395515b0

如果token失效則需要重新生成,命令如下:

kubeadm token create --print-join-command [--ttl 0]

“--ttl 0”可選項,表示token的有效時間,0表示永遠(yuǎn)有效。上述命令的結(jié)果即加入集群需要的命令。
注:
如果初始化有問題或者要回退使用下面的命令進(jìn)行重置

# kubeadm reset

同時使用ip link delete刪除相應(yīng)的網(wǎng)路。

補(bǔ)充說明:
另外對于docker鏡像的導(dǎo)入和導(dǎo)出還有docker export/import

  • docker export 導(dǎo)出容器為壓縮文件,命令格式如下:

# docker export -o <path for generated tar file> <container name>

類似于docker save,指定要輸出的文件路徑和文件名,后面跟上要導(dǎo)出的容器的名稱或者id。

  • docker import 把導(dǎo)出的文件系統(tǒng)導(dǎo)入為鏡像,命令格式如下:

# docker import <tar file> <container name>

“如何在CentOS上安裝Kubernetes集群”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI