溫馨提示×

溫馨提示×

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

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

怎么安裝Kubernets集群?

發(fā)布時間:2020-05-29 10:41:19 來源:億速云 閱讀:259 作者:Leah 欄目:云計算

怎么安裝Kubernets集群?針對這個問題,今天小編總結(jié)這篇有關(guān)安裝Kubernets集群的文章,希望幫助更多想解決這個問題的同學(xué)找到更加簡單易行的辦法。


  • 系統(tǒng)初始化

首先是三個centos的服務(wù)器。然后開始安裝組件,這里為了方便三個機器上裝的軟件,拉的鏡像都一樣了,實際上可以少安裝的一點,不過反正也節(jié)約不了多少空間,因為這些軟件和鏡像不是很大。

先是關(guān)防火墻和selinux之類的操作確保這些設(shè)置不會影響到操作。

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

swapoff -a
setenforce 0

還有記得把/etc/fstab里的有swap字符的一行給注釋掉,否則重啟后kubelet的服務(wù)會出錯。參考命令

sed -i 's/.*swap.*/#&/' /etc/fstab


  • 安裝docker

接下來就是開始下軟件和拉鏡像的活了。它們同時存在的問題就是官方源不能下(因為它是某外國知名搜索引擎的服務(wù)器)。所以要加一下鏡像源。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce

systemctl start docker
systemctl status docker
systemctl enable docker


  • 安裝kubernets

安裝 kubelet、kubeadm、kubectl,注意一下版本,yum源下載的版本默認是最新的,那么容器鏡像至少要比這個版本新,如果沒有,請在下載的時候注明版本信息。我在做本次測試環(huán)境的時候所有的軟件和鏡像都是1.16.0的版本。

加阿里云的鏡像源。

cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

加上版本的下載方法。

yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

如果你已經(jīng)下錯了,可以用一些命令來解決。

rpm -qa | grep kube 查看版本

yum downgrade <package> //這個是yum降級的命令



先輸入命令

kubeadm config images list

它會告訴你,你需要下載哪些鏡像,你心里得有個底,至少這些鏡像你要先下載完成才能完成繼續(xù)。

當(dāng)我在做的時候,屏幕上顯示的是

k8s.gcr.io/kube-apiserver:v1.16.7

k8s.gcr.io/kube-controller-manager:v1.16.7

k8s.gcr.io/kube-scheduler:v1.16.7

k8s.gcr.io/kube-proxy:v1.16.7

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.3.15-0

k8s.gcr.io/coredns:1.6.2

如果你輸入了命令,后面的版本可能會有變化,但是前面基本是是一致的。



然后開始用kubeadmin init的方法去初始化集群。不過直接運行網(wǎng)上常見的命令估計90%是失敗的。我在踩坑的時候找到兩個辦法,可以試試。

一個是:

kubeadm init --kubernetes-version=v1.16.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap --image-repository=registry.aliyuncs.com/google_containers

這個方法加了一個--image-repository=registry.aliyuncs.com/google_containers參數(shù)改變了下載地址。

不過這么做之后,你依舊要把這些docker鏡像的倉庫名改為k8s.gcr.io。

例如你在用命令docker images看到了鏡像的列表。

里面有一個鏡像叫做registry.aliyuncs.com/google_containers/kube-apiserver

那么你要用命令docker tag registry.aliyuncs.com/google_containers/kube-apiserver   k8s.gcr.io/kube-apiserver

這樣的方法去改。有很多個這樣的鏡像它們的倉庫名都要改。改完之后你可以用docker rmi <images>逐個的把原來registry.aliyuncs.com/google_containers打頭的鏡像統(tǒng)統(tǒng)刪除。當(dāng)然你留著也沒問題。

用腳本去完成操作

#!/bin/bash## 使用如下腳本下載國內(nèi)鏡像,并修改tag為google的tagset -e

KUBE_VERSION=v1.16.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.15-0
CORE_DNS_VERSION=1.6.2

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageNamedone
done

然后再運行init命令(以下命令的參數(shù)怎么設(shè)置呢?第二行的為本機的IP,第三行是容器的版本,第四行則是pod網(wǎng)絡(luò),這個盡量不要改吧。)

sudo kubeadm init \
 --apiserver-advertise-address 192.168.10.20 \
 --kubernetes-version=v1.16.0 \
 --pod-network-cidr=10.244.0.0/16

如下圖,然后初始化成功之后,會有一大堆的解釋,其中有幾條是讓你運行的命令,那么就照做吧。

怎么安裝Kubernets集群?

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

還有一條命令kubeadm join不是在本機上運行的。它看起來像這個樣子

kubeadm join 192.168.10.20:6443 --token lixsl8.v1auqmf91ty0xl0k \
    --discovery-token-ca-cert-hash sha256:c3f92a6ed9149ead327342f48a545e7e127a455d5b338129feac85893d918a55

你要記住這個命令,因為里面有唯一的token,這個每一臺都是不一樣的。即使你忘了也沒關(guān)系,你可以用

kubeadm token create --print-join-command

重新找到它。

還有就是可能你不是一次就能成功的,如果kubeadm init中途有失敗的,你需要用命令

kubeadm reset

來重置master節(jié)點。否則會報錯,報錯通常會說xxx.yaml already exist

怎么安裝Kubernets集群?

還有關(guān)于swap分區(qū)引起的問題

怎么安裝Kubernets集群?

程序會提醒你用以下的命令去查看問題。

systemctl status kubelet
jouralctl -xeu kubelet


在完成這一切之后,你可以使用以下命令去查看pod的狀態(tài)。

kubectl get pods --all-namespaces -o wide

應(yīng)該類似于這樣的一個樣子。

怎么安裝Kubernets集群?

其中coredns這個容器的狀態(tài)時pending的,還需要裝一下網(wǎng)絡(luò)的組件。


安裝flanneld

你已經(jīng)操作過以下的操作了吧?

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

然后下載quay.io的鏡像,同理用腳本去拉鏡像,或者自己去鏡像網(wǎng)站上拉鏡像。

#!/bin/bash

set -e

FLANNEL_VERSION=v0.11.0

# 在這里修改源
QUAY_URL=quay.io/coreos
QINIU_URL=quay-mirror.qiniu.com/coreos

images=(flannel:${FLANNEL_VERSION}-amd64
flannel:${FLANNEL_VERSION}-arm64
flannel:${FLANNEL_VERSION}-arm
flannel:${FLANNEL_VERSION}-ppc64le
flannel:${FLANNEL_VERSION}-s390x)

for imageName in ${images[@]} ; do
  docker pull $QINIU_URL/$imageName
  docker tag  $QINIU_URL/$imageName $QUAY_URL/$imageName
  docker rmi $QINIU_URL/$imageNamedone
done

然后去網(wǎng)上下載這個文件

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

如果wget不能成功下載,可以在別的地方下載之后放到服務(wù)器里去,我就是用迅雷下載的這個文件。

kubectl apply -f kube-flanneld.yaml


node節(jié)點的安裝

我在配置node節(jié)點的時候偷懶了,我用了master相同的的方法把所有的軟件和鏡像都下載下來了,實際上只要其中的一些,根據(jù)前面那個博客上的做法,你可以把在master上已經(jīng)下載好的鏡像打包復(fù)制到node節(jié)點上。

## master上執(zhí)行docker save -o pause.tar k8s.gcr.io/pause:3.1
docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy## node上執(zhí)行docker load -i pause.tar 
docker load -i kube-proxy.tar 

## node上執(zhí)行docker load -i pause.tar 
docker load -i kube-proxy.tar

flannel網(wǎng)絡(luò)也得在node上進行一遍。

然后還記得那條kubeadm join的命令嗎?就是那個帶token的那條,可以輸入了。


以上就是安裝Kubernets集群的詳細內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!

向AI問一下細節(jié)

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

AI