首先,我們看下官方提供的K8S集群地址:
https://github.com/kubernetes/kubernetes/releases

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

建議server端和client端分開下載,這里需要注意的是我們的master和node都是server端。
以上為官方提供的,在國內(nèi)阿里云鏡像同樣提供了相關(guān)的下載:
https://opsx.alibaba.com/mirror

在阿里云中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

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

2、Kubernetes的下載/安裝
配置阿里云國內(nèi)源,

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


安裝指定版本的Kubernetes:
yum -y install kubelet-1.11.0-0

yum -y install kubeadm-1.11.0-0

yum -y install kubectl-1.11.0-0

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

查看Docker信息:docker info

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

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

4、Kubeadm所需鏡像的下載
首先我們測(cè)試一下與gcr.io的連接:

如上所示,在國內(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)。

5、Kubernetes主節(jié)點(diǎn)的創(chuàng)建
以上準(zhǔn)備工作完成之后我們就可以開始主節(jié)點(diǎn)的部署了。
首先安裝 kubeadm,執(zhí)行 kubeadm init --kubernetes-version=v1.11.0


注意將初始化最后一句 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"

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


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


我使用的是v1.11.0

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

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




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

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


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

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

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


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

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

到此一個(gè)簡(jiǎn)單的Kubernetes集群就被粗略搭建成功了。
參考資料:
《每天5分鐘玩轉(zhuǎn)Kubernetes》
《黑馬k8s集群技術(shù)》