K8S集群的簡(jiǎn)單搭建

首先,我們看下官方提供的K8S集群地址:

https://github.com/kubernetes/kubernetes/releases

官方在github上的發(fā)行版本

如圖Kubernetes分為客戶端和服務(wù)端


發(fā)行版的客戶端和服務(wù)端

建議server端和client端分開下載,這里需要注意的是我們的master和node都是server端。

以上為官方提供的,在國內(nèi)阿里云鏡像同樣提供了相關(guān)的下載:

https://opsx.alibaba.com/mirror


阿里云kubernetes鏡像

在阿里云中Kubernetes的鏡像倉庫為:https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

下面我們開始K8S集群搭建的準(zhǔn)備工作:

1、docker的下載/安裝

我們從阿里云獲取 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

獲取docker的repo

運(yùn)行 yum install docker-ce,進(jìn)行docker的安裝。

安裝docker

2、Kubernetes的下載/安裝

配置阿里云國內(nèi)源,

kubernetes.repo

注意:centos7用戶還需要設(shè)置路由

默認(rèn)情況下
設(shè)置路由

安裝指定版本的Kubernetes:

yum -y install kubelet-1.11.0-0

kubelet

yum -y install kubeadm-1.11.0-0

kubeadm

yum -y install kubectl-1.11.0-0

kubectl

3、Docker/Kubectl 的啟動(dòng)

啟動(dòng)Docker(并設(shè)置為開機(jī)自啟動(dòng)) : systemctl start docker & systemctl enable docker

啟動(dòng)docker

查看Docker信息:docker info

查看信息


啟動(dòng)Kubernetes(并設(shè)置為開機(jī)自啟動(dòng)):

Kubernetes啟動(dòng)

我們可以使用systemctl status kubelet 查看kubelet狀態(tài);使用 tail /var/log/messages,查看日志

查看kubelet信息


4、Kubeadm所需鏡像的下載

首先我們測(cè)試一下與gcr.io的連接:

連接測(cè)試

如上所示,在國內(nèi)我們無法連接到gcr.io,無法訪問到 Google 的鏡像庫,所以我們需要從 Docker Hub 倉庫中獲取相同的鏡像,并且更改 TAG 讓其變成與 Google 拉去鏡像一致。

我們需要?jiǎng)?chuàng)建一個(gè)shell腳本,填入如下內(nèi)容:

鏡像拉取腳本

然后執(zhí)行腳本進(jìn)行鏡像的下載:

下載鏡像

如圖,我們需要的鏡像已被下載到docker中

鏡像

注意:Kubernetes要求關(guān)閉系統(tǒng)的Swap,如果不關(guān)閉,默認(rèn)配置下kubelet將無法啟動(dòng)。

關(guān)閉Swap

5、Kubernetes主節(jié)點(diǎn)的創(chuàng)建

以上準(zhǔn)備工作完成之后我們就可以開始主節(jié)點(diǎn)的部署了。

首先安裝 kubeadm,執(zhí)行 kubeadm init --kubernetes-version=v1.11.0


kubeadm安裝
安裝成功

注意將初始化最后一句 kubeadm join 記錄下來,后續(xù)用于將從節(jié)點(diǎn)加入集群。

如果你在執(zhí)行語句之后報(bào)出如下錯(cuò)誤

[ERROR SystemVerification]: unsupported docker version: 18.09.5

[ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.14.1" Control plane version: "1.11.0"

錯(cuò)誤信息

請(qǐng)檢擦,是否在安裝kubeadm、kubernetes-cni時(shí),依賴安裝了其他版本的kubectl或者kebelet,導(dǎo)致版本不一致。

這時(shí)我們需要?jiǎng)h除原來的新安裝對(duì)應(yīng)版本即可。

刪除目標(biāo)版本
重新安裝

我使用的是v1.11.0

Kubernetes版本

配置 kubectl 認(rèn)證信息:

kubectl 認(rèn)證信息

安裝flanel網(wǎng)絡(luò):

創(chuàng)建flannel配置文件
配置文件內(nèi)容
繼續(xù)創(chuàng)建subnet文件
subnet文件內(nèi)容

最后,我們需要新建一個(gè)flannel.yml文件(具體內(nèi)容之后一篇給出,http://www.itdecent.cn/p/bbc52c760184)。

flannel.yml

創(chuàng)建完成之后,執(zhí)行 kubectl create -f ./flannel.yml,之后再執(zhí)行 kubectl get nodes 進(jìn)行查看

執(zhí)行flannel.yml文件
成功

注意若在執(zhí)行 kubectl create -f ./flannel.yml ,之后報(bào)出如下錯(cuò)誤,請(qǐng)確認(rèn)端口是否開放。若未開放執(zhí)行 kubectl proxy --port=端口號(hào) &,來開發(fā)端口

報(bào)錯(cuò)


6、Node節(jié)點(diǎn)的創(chuàng)建

在node節(jié)點(diǎn),我們需要將之前的準(zhǔn)本工作重復(fù)一遍(kubectl可以不安裝),然后執(zhí)行我們?cè)?master節(jié)點(diǎn) kubeadm 初始化完成后的 kubeadm join 語句

從節(jié)點(diǎn)的創(chuàng)建

完成之后node節(jié)點(diǎn)就被成功加入集群中了。我們可以回到master節(jié)點(diǎn),查看集群狀況。

云服務(wù)器信息
K8S集群信息

注意,有時(shí)我們?cè)趎ode節(jié)點(diǎn)執(zhí)行 kubeadm join 命令會(huì)提示如下信息

token失效

遇到這樣情況,就需要我們重新初始化 kubeadm ,先使用 kubeadm reset 重置,然后再重新初始化。

問題處理

到此一個(gè)簡(jiǎn)單的Kubernetes集群就被粗略搭建成功了。


參考資料:

《每天5分鐘玩轉(zhuǎn)Kubernetes》

《黑馬k8s集群技術(shù)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容