[k8s]基于Centos7安裝kubernetes1.13.2集群

本篇文章是基于kubernetes—CentOS7安裝kubernetes1.11.2圖文完整版這篇文章而寫,主要是為了記錄安裝成功的過(guò)程加上自己的一些理解,為了避免以后遺忘。

設(shè)置主機(jī)名

這樣就可以將主機(jī)名設(shè)置成自己想要的名字,方便查看。我把master節(jié)點(diǎn)設(shè)置為k8s-master,從節(jié)點(diǎn)設(shè)置為k8s-node1
分別在兩臺(tái)機(jī)器上進(jìn)行設(shè)置,下面用master節(jié)點(diǎn)來(lái)舉例

hostname k8s-master

編輯對(duì)應(yīng)關(guān)系,首先用ifconfig命令來(lái)獲取ip地址,然后使用命令

vi /etc/hosts

輸入

192.168.194.135 k8s-master

關(guān)閉防火墻

CentOS Linux7中默認(rèn)開(kāi)啟了防火墻,在一個(gè)安全的內(nèi)部網(wǎng)絡(luò)環(huán)境中可以關(guān)閉防火墻服務(wù)

sudo systemctl stop firewalld.service   #停止firewall
sudo systemctl disable firewalld.service #禁止firewall開(kāi)機(jī)啟動(dòng)
sudo firewall-cmd --state             #查看防火墻狀態(tài)

這時(shí)可以看到防火墻的狀態(tài)是not running

在主機(jī)上禁用SELinux

讓容器可以讀取主機(jī)文件系統(tǒng)

sudo setenforce 0

或者也可以用修改系統(tǒng)文件的方式修改

sudo vi /etc/selinux/config
#SELINUX修改為disabled
SELINUX=disabled 

創(chuàng)建/etc/sysctl.d/k8s.conf文件

sudo vi /etc/sysctl.d/k8s.conf

添加如下內(nèi)容:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

使修改生效,執(zhí)行

sudo sysctl -p /etc/sysctl.d/k8s.conf

關(guān)閉swap

swapoff -a

配置yum源

因?yàn)橛胟8s官網(wǎng)給的yum源國(guó)內(nèi)訪問(wèn)不了,所以用的是阿里云的yum倉(cāng)庫(kù)鏡像

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

安裝kubeadm和相關(guān)工具

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

如果本來(lái)就已經(jīng)安裝了Docker,那取消命令中的docker。


安裝成功頁(yè)面

安裝成功了后,啟動(dòng)Docker服務(wù)和kubelet服務(wù),并且設(shè)置成開(kāi)機(jī)自動(dòng)啟動(dòng)

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
啟動(dòng)服務(wù)

下載kubernetes相關(guān)鏡像

kubeadm默認(rèn)從gcr.io中下載kubernetes相關(guān)鏡像,但是我們無(wú)法訪問(wèn)gcr.io的網(wǎng)絡(luò)環(huán)境,所以采用了Daocloud來(lái)獲取鏡像加速服務(wù)

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

該腳本可以將 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中 ,然后重啟docker來(lái)使得docker生效

systemctl restart docker #重啟docker

這時(shí)可能會(huì)出現(xiàn)重啟失敗的錯(cuò)誤,需要去檢查配置文件 /etc/docker/daemon.json,使得文件中的內(nèi)容為:


配置文件

手動(dòng)下載相關(guān)鏡像

接下來(lái)去手動(dòng)下載kubernetes相關(guān)鏡像,下載地址是https://hub.docker.com/r/warrior

docker pull mirrorgooglecontainers/kube-apiserver:v1.13.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.2
docker pull mirrorgooglecontainers/kube-proxy:v1.13.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6

修改鏡像名,以供kubeadm使用

docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.2 k8s.gcr.io/kube-apiserver:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24  k8s.gcr.io/etcd:3.2.24
docker tag docker.io/mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
docker tag docker.io/coredns/coredns:1.2.6  k8s.gcr.io/coredns:1.2.6

運(yùn)行kubeadm init安裝master

kubeadm init --kubernetes-version = 1.13.2

運(yùn)行


成功界面

安裝Node,加入集群

安裝kubeadm和相關(guān)工具

此部分內(nèi)容和上文中對(duì)應(yīng)內(nèi)容一致

加入集群

kubeadm join 192.168.194.128:6443 --token 7orz4v.q5landhrmjc844ep --discovery-token-ca-cert-hash sha256:9c7f5c99293d7978a2ce9e0d7900715e0b9241526f69da237b74cad419470864
  • 這上面的token及ip地址均為master節(jié)點(diǎn)安裝成功界面中的提示。
  • 獲取ca證書(shū)sha256編碼hash值,在master節(jié)點(diǎn)上輸入命令
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

輸入后可能會(huì)提示你swap沒(méi)有關(guān)閉,輸入命令來(lái)關(guān)閉就行,命令如下

swapoff -a

再次join,發(fā)現(xiàn)加入成功


加入成功

安裝網(wǎng)絡(luò)插件

添加節(jié)點(diǎn)后,通過(guò)kubectl get nodes命令,可能會(huì)發(fā)現(xiàn)報(bào)錯(cuò):The connection to the server localhost:8080 was refused - did you specify the right host or port?
輸入命令

export KUBECONFIG=/etc/kubernetes/admin.conf

解決了這個(gè)問(wèn)題,但是Kubernetes提示Master節(jié)點(diǎn)為NotReady的狀態(tài),所以要安裝網(wǎng)絡(luò)插件
這里選擇的flannel插件

mkdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f  kube-flannel.yml

這時(shí)候使用kubectl get pod –all-namespaces -o wide確保所有的Pod都處于Running狀態(tài)。
這里出了一個(gè)錯(cuò)誤,kube-flannel-ds-amd64節(jié)點(diǎn)出現(xiàn)了init錯(cuò)誤,使用

yum install flannel

進(jìn)行安裝flannel,問(wèn)題得到的解決,與此同時(shí)可以看到master節(jié)點(diǎn)已經(jīng)是ready狀態(tài)了

手動(dòng)配置副節(jié)點(diǎn)鏡像

當(dāng)前頁(yè)面狀態(tài)

這時(shí)候發(fā)現(xiàn)副節(jié)點(diǎn)還是notready的狀態(tài),查看pod的狀態(tài),發(fā)現(xiàn)卡在ContainerCreating狀態(tài)和Init:0/1,這是因?yàn)楦惫?jié)點(diǎn)鏡像沒(méi)有獲取到的原因,按照上文手動(dòng)安裝鏡像的內(nèi)容重新進(jìn)行安裝。而flannel則是在master節(jié)點(diǎn)輸入docker image命令查看鏡像版本,然后手動(dòng)下載就可以。

成功

準(zhǔn)備好鏡像之后發(fā)現(xiàn)成功:


安裝成功界面
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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