kubeadm安裝k8s集群1.17版本

kubeadm安裝k8s集群1.17版本

一、安裝要求:

滿足以下條件
一臺(tái)或多臺(tái)機(jī)器,操作系統(tǒng) CentOS7.x-86_x64
硬件配置:2GB或更多RAM,2個(gè)CPU或更多CPU,硬盤30GB或更多
集群中所有機(jī)器之間網(wǎng)絡(luò)互通
可以訪問外網(wǎng),需要拉取鏡像
禁止swap分區(qū)

創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機(jī)網(wǎng)站制作等網(wǎng)站方面業(yè)務(wù)。

說在前面的話,kubeadm是k8s官方推出的一個(gè)用于快速部署一套k8s集群的工具,而在近幾年現(xiàn)在kubeadm上生產(chǎn)的公司也有了,不過對(duì)于各個(gè)方面對(duì)于集群的管理以及二次性的開發(fā),大多數(shù)都是采用二進(jìn)制的方式進(jìn)行去部署生產(chǎn)上的k8s集群,由于k8s版本更新比較頻繁,像對(duì)于拿k8s集群進(jìn)行一些測試方面的操作,平時(shí)希望自己能夠快速的部署一套進(jìn)行測試,而對(duì)于二進(jìn)制以及Ansible部署的方式當(dāng)然也可以部署,不過二進(jìn)制就慢了很多,像ansible的話還得需要一臺(tái)服務(wù)器單獨(dú)拿出來做管理節(jié)點(diǎn),對(duì)于我們平時(shí)拿虛擬機(jī)去測試的話,如果自己的機(jī)器比較緊張,kubeadm也是一個(gè)比較不錯(cuò)的選擇,另外也是嘗試一下新版本的k8s,緊跟官方新版本的腳步。

話不多說,進(jìn)入正題

在kubeadm中有兩條重要的命令,一個(gè)是kubeadm init,一個(gè)是kubeadm join, init 主要的實(shí)現(xiàn)就是去創(chuàng)建一個(gè)master節(jié)點(diǎn),而在運(yùn)行init之后,首先會(huì)運(yùn)行一系列的輸出,首先它會(huì)檢查你的docker版本或者你的swap有沒有關(guān)閉,因?yàn)閐ocker首先是必須要運(yùn)行的,在k8s集群中,docker是用來啟動(dòng)我們的容器和鏡像的下載的,而swap需要進(jìn)行關(guān)閉,這是k8s官方提出的一個(gè)默認(rèn)的規(guī)則,在k8s-1.8之后就是需要你關(guān)閉swap,否則會(huì)出現(xiàn)報(bào)錯(cuò),目的開啟swap會(huì)占用大的內(nèi)存,也會(huì)對(duì)性能影響很大的消耗。

第二它會(huì)生成一個(gè)用來認(rèn)證k8s組件之間進(jìn)行調(diào)用的CA證書,證書有兩套,第一個(gè)就是k8s的證書,另一套就是etcd的證書,而這個(gè)證書kubeadm安裝的放置證書的位置在/etc/kubernetes/pki下面。

第三它會(huì)把kubelet、controller-manager和scheduler等組件的配置文件寫到/etc/kubernets/目錄中,里面包含了一些證書文件,這些主要用來連接api-server,除了上面幾個(gè)配置文件,還會(huì)生成一個(gè)管理相關(guān)的admin.conf文件

第四它會(huì)生成token文件,如果其他節(jié)點(diǎn)加入進(jìn)來到master的話,就會(huì)使用到這個(gè)token

第五設(shè)置一些允許節(jié)點(diǎn)以 Bootstrap Tokens) 和 TLS bootstrapping 方式加入集群的必要的操作
設(shè)置csr請求自動(dòng)認(rèn)證的機(jī)制,這個(gè)的話,kubeadm是自己做好的,部署過二進(jìn)制的應(yīng)該知道,當(dāng)node加入進(jìn)來的時(shí)候,我們需要對(duì)它授權(quán)approve,手動(dòng)允許加入集群中

第六,部署DNS服務(wù),kube-proxy插件,當(dāng)然一般DNS服務(wù)需要我們部署好flannel網(wǎng)絡(luò)插件之后,這個(gè)服務(wù)才能運(yùn)行起來

大概的流程是這樣的,詳情請看官網(wǎng)文檔
https://kubernetes.io/

二、集群配置

k8s-master            192.168.1.15
k8s-node1             192.168.1.11
k8s-node2             192.168.1.14

系統(tǒng)初始化配置(每個(gè)節(jié)點(diǎn)都需要配置)

關(guān)閉防火墻:

#systemctl stop firewalld
#systemctl disable firewalld

關(guān)閉selinux:

#sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
#setenforce 0  # 臨時(shí)

關(guān)閉swap:

#swapoff -a  # 臨時(shí)
#vim /etc/fstab  # 永久

設(shè)置主機(jī)名:主機(jī)名根據(jù)自己的主機(jī)去使用這條命令
#hostnamectl set-hostname <hostname>

每臺(tái)主機(jī)添加hosts:

#cat >> /etc/hosts << EOF
192.168.1.15 k8s-master
192.168.1.11 k8s-node1
192.168.1.14 k8s-node2
EOF

將橋接的IPv4流量傳遞到iptables的鏈:

#cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#sysctl --system  # 生效

時(shí)間同步:

#yum install ntpdate -y
#ntpdate us.pool.ntp.org

三、 所有節(jié)點(diǎn)安裝Docker/kubeadm/kubelet

Kubernetes默認(rèn)CRI(容器運(yùn)行時(shí))為Docker,因此先安裝Docker。
3.1 安裝Docker

#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum -y install docker-ce-18.06.1.ce-3.el7
#systemctl enable docker && systemctl start docker
#docker --version
Docker version 18.06.1-ce, build e68fc7a

鏡像加速劑
Daocloud公司建議使用,提高鏡像下載速度,使用k8s官方默認(rèn)的cgroup的

systemd
#more /etc/docker/daemon.json 
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
 "exec-opts":["native.cgroupdriver=systemd"]
}
重啟docker
#systemctl restart docker

3.2 所有節(jié)點(diǎn)添加阿里云YUM軟件源

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

3.3 所有節(jié)點(diǎn)安裝kubeadm,kubelet和kubectl
由于版本更新頻繁,這里指定版本號(hào)部署:

#yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
#systemctl enable kubelet

四、部署Kubernetes Master

在192.168.1.15(Master)執(zhí)行
并將--apiserver -advertise-address的地址寫成master的地址
由于默認(rèn)拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址。
對(duì)于其他的辦法,或者就是提前將鏡像下載好,然后導(dǎo)進(jìn)去,其實(shí)這塊阿里云倉庫默認(rèn)已經(jīng)有維護(hù)的k8s組件的鏡像了,這里直接可以使用

#kubeadm init \
--apiserver-advertise-address=192.168.1.15 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

kubeadm init,執(zhí)行init 初始化之后會(huì)顯示k8s的版本,第二就是檢查配置比如swap關(guān)閉,docker的cgroup,k8s默認(rèn)需要的是systemd的驅(qū)動(dòng)程序,另外需要去下載k8s組件所需要的鏡像,這里需要等待一會(huì).....

[init] Using Kubernetes version: v1.17.0
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'

使用kubectl工具:
默認(rèn)init初始化之后會(huì)輸入下面應(yīng)該操作的步驟,直接執(zhí)行

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

由于我們的網(wǎng)絡(luò)cni插件還沒有部署,所以它的狀態(tài)一直是未就緒狀態(tài)

#kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
k8s-master   NotReady   master   19m   v1.17.0

五、安裝Pod網(wǎng)絡(luò)插件(CNI)

#mkdir /k8s-cni
#wget -P /k8s-cni https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

默認(rèn)這個(gè)網(wǎng)絡(luò)插件下載會(huì)出現(xiàn)一些問題,拉取不到,導(dǎo)致網(wǎng)絡(luò)不通,節(jié)點(diǎn)無法準(zhǔn)備就緒
可以改成這個(gè)鏡像地址,到flannel的yaml下,找到amd64有兩行放置flannel的鏡像的位置替換為:zhaocheng172/flannel:v0.11.0-amd64
確保flannel起來

#kubectl get pod -A
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-9d85f5447-htzgm              1/1     Running   0          27m
kube-system   coredns-9d85f5447-sz9kg              1/1     Running   0          27m
kube-system   etcd-k8s-master                      1/1     Running   0          27m
kube-system   kube-apiserver-k8s-master            1/1     Running   0          27m
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          27m
kube-system   kube-flannel-ds-amd64-5r2qv          1/1     Running   0          4m13s
kube-system   kube-proxy-npgrm                     1/1     Running   0          27m
kube-system   kube-scheduler-k8s-master            1/1     Running   0          27m

六、加入Kubernetes Node

在192.168.1.11/14(Node)執(zhí)行。
向集群添加新節(jié)點(diǎn),執(zhí)行在kubeadm init輸出的kubeadm join命令:
加入之后需要等待一會(huì)時(shí)間,因?yàn)樗鼤?huì)像k8s的node節(jié)點(diǎn)都啟動(dòng)兩個(gè)flanneld的進(jìn)行,打通跨主機(jī)節(jié)點(diǎn)之間容器的通信,驗(yàn)證命令kubectl get pod -A

#kubeadm join 192.168.1,15:6443 --token esce21.q6hetwm8si29qxwn \
  --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

七、查看node是否加入進(jìn)來

#kubectl get node
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   55m   v1.17.0
k8s-node1    Ready    <none>   25m   v1.17.0
k8s-node2    Ready    <none>   25m   v1.17.0

網(wǎng)站題目:kubeadm安裝k8s集群1.17版本
文章轉(zhuǎn)載:http://bm7419.com/article20/psssco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化、網(wǎng)頁設(shè)計(jì)公司、搜索引擎優(yōu)化、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)