使用kubeadm命令行工具創(chuàng)建kubernetes集群
命令行工具
主要有三個(gè)工具,命令行工具使用 kube 前綴命名。
kubeadm
:用來(lái)初始化集群的指令。kubelet
:在集群中的每個(gè)節(jié)點(diǎn)上用來(lái)啟動(dòng) Pod 和容器等。kubectl
:用來(lái)與集群通信的命令行工具。
通過(guò)軟件倉(cāng)庫(kù)安裝
方法 ①
此方法是通過(guò) Google 的源下載安裝工具包。
更新 apt
包索引并安裝使用 Kubernetes apt
倉(cāng)庫(kù)所需要的包:
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
下載 Google Cloud 公開(kāi)簽名秘鑰:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
添加 Kubernetes apt
倉(cāng)庫(kù):
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
更新 apt
包索引,安裝 kubelet、kubeadm 和 kubectl,并鎖定其版本:
sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
方法 ②
通過(guò)阿里云的源下載安裝工具包。
通過(guò)命令直接添加源。
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add
然后更新軟件源并安裝這三個(gè)工具。
apt-get update && apt-get install -y apt-transport-https curl apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
執(zhí)行命令檢查是否正常:
kubeadm --help
二進(jìn)制文件下載安裝
查看 kubectl 最新穩(wěn)定版本:
curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt
筆者當(dāng)前查詢(xún)到的穩(wěn)定版本是 v1.20.2。
下載 kubectl 可執(zhí)行文件,可替換 URL 中的版本號(hào)。
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl
下載后,目錄可以看到一個(gè) kubectl 文件,40MB 大小,國(guó)內(nèi)下載速度稍慢,有可能無(wú)法下載,做好心理準(zhǔn)備。
然后需要為其賦予可執(zhí)行文件權(quán)限。
sudo chmod +x ./kubectl
為了可以直接使用 kubectl ,可以將文件復(fù)制到 bin 目錄。
sudo mv ./kubectl /usr/local/bin/kubectl
執(zhí)行命令輸出版本號(hào),檢查是否安裝成功。
kubectl version --client
輸出:
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
ubutu & centos 快速安裝
只是這里介紹一下 ubuntu 和 centos 不同的安裝方法,已經(jīng)通過(guò)前面的安裝方法安裝好,則不需要理會(huì)這一小節(jié)。
Ubuntu 和 Debain 等系統(tǒng)可以使用以下命令通過(guò)軟件倉(cāng)庫(kù)安裝:
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)可以使用以下命令通過(guò)軟件倉(cāng)庫(kù)安裝:
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 集群
前面介紹了如何按照這三個(gè)工具,如果你沒(méi)有服務(wù)器,我們可以使用開(kāi)源組織提供的線上服務(wù)器進(jìn)行測(cè)試。
我們?cè)诘谝粋€(gè) node 中操作,創(chuàng)建 master。執(zhí)行 hostname -i
查看此 node 的 ip。
Kubeadm 是一個(gè)提供了 kubeadm init
和 kubeadm join
的工具,作為創(chuàng)建 Kubernetes 集群的 “快捷途徑” 的最佳實(shí)踐。
1,創(chuàng)建 Master
我們初始化一個(gè) API Server 服務(wù),綁定地址為 192.168.0.8(按照你的ip改)。此步驟創(chuàng)建了一個(gè) master 節(jié)點(diǎn)。
注:可以直接使用 kubeadm init
,它會(huì)自動(dòng)使用默認(rèn)網(wǎng)絡(luò)ip。
kubeadm init --apiserver-advertise-address 192.168.0.8
完成后,會(huì)提示:
kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \ --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64
保存下來(lái),后面?zhèn)溆谩?/p>
如果有提示 Alternatively, if you are the root user, you can run:
則你還需要執(zhí)行下面的命令。
export KUBECONFIG=/etc/kubernetes/admin.conf
2,然后初始化集群網(wǎng)絡(luò)。
接著執(zhí)行初始化命令處理配置。注意,需要 admin.conf
才能執(zhí)行命令,否則會(huì)報(bào) The connection to the server localhost:8080 was refused - did you specify the right host or port?
。
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
然后執(zhí)行這個(gè)命令初始化。
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
成功的話會(huì)提示:
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
3,加入集群
再創(chuàng)建一個(gè)新的節(jié)點(diǎn)(另一臺(tái)服務(wù)器),執(zhí)行 hostname -i
查看 ip。
在第二個(gè)節(jié)點(diǎn)中,執(zhí)行命令,加入集群。請(qǐng)?zhí)鎿Q命令中的 192.168.0.8
為正確的 master 節(jié)點(diǎn) 的 ip。
kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \ --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64
接著新建第二第三個(gè) node,執(zhí)行上面的 kubeadm join
命令,加入集群。
如果出現(xiàn) failed to parse kernel config: unable to load kernel module
,說(shuō)明 docker 版本太高,需要降級(jí)。
查看 docker 版本:yum list installed | grep docker
和 docker version
。
降級(jí) 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
會(huì)看到 client 和 server 版本,兩者的版本號(hào)可能不一致。
清除環(huán)境
如果步驟做錯(cuò)了或者想重來(lái),可以執(zhí)行 kubeadm reset [flags]
命令。
注:只執(zhí)行 kubeadm reset
命令無(wú)效。
[flags]
有四種類(lèi)型:
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
到此這篇關(guān)于使用kubeadm命令行工具創(chuàng)建kubernetes集群的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Kubernetes scheduler啟動(dòng)監(jiān)控資源變化解析
這篇文章主要為大家介紹了Kubernetes scheduler啟動(dòng)監(jiān)控資源變化解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11kubernetes數(shù)據(jù)持久化PV?PVC深入分析詳解
這篇文章主要為大家介紹了kubernetes數(shù)據(jù)持久化PV?PVC分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Kubernetes(K8S)容器集群管理環(huán)境完整部署詳細(xì)教程-上篇
本系列文章主要介紹了Kubernetes(K8S)容器集群管理環(huán)境完整部署的詳細(xì)教程,分為上中下三篇文章,此為上篇,需要的朋友可以參考下2022-01-01使用kubeadm命令行工具創(chuàng)建kubernetes集群
這篇文章介紹了使用kubeadm命令行工具創(chuàng)建kubernetes集群的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法
這篇文章主要介紹了CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04KubeSphere接入外部Elasticsearch實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了KubeSphere接入外部Elasticsearch實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Citrix Xenserver 7怎么安裝?Xenserver 7.0安裝詳細(xì)圖文教程(附下載地址)
XenServer 7.0正式版已近發(fā)布了,今天腳本之家 小編為大家?guī)?lái)了Xenserver 7安裝詳細(xì)圖文教程,希望對(duì)大家有所幫助2017-12-12