天天看點

CentOS7安裝Kubernetes1.18.1并使用flannel;

一、概述

手工搭建 Kubernetes 叢集是一件很繁瑣的事情,為了簡化這些操作,就産生了很多安裝配置工具,如 Kubeadm

,Kubespray,RKE 等元件,我最終選擇了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差異,Kubeadm

更新與支援的會好一些。Kubeadm 是 Kubernetes 官方提供的快速安裝和初始化 Kubernetes

叢集的工具,目前的還處于孵化開發狀态,跟随 Kubernetes 每個新版本的釋出都會同步更新,

強烈建議先看下官方的文檔了解下各個元件與對象的作用。

https://kubernetes.io/docs/concepts/

https://kubernetes.io/docs/setup/independent/install-kubeadm/

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

在建立Kubernetes叢集時,阿裡雲容器服務提供兩種網絡插件:Terway和Flannel。

Flannel:使用的是簡單穩定的社群的Flannel CNI 插件,配合阿裡雲的VPC的高速網絡,能給叢集高性能和穩定的容器網絡體驗,但功能偏簡單,支援的特性少,例如:不支援基于Kubernetes标準的Network Policy。

Terway:是阿裡雲容器服務自研的網絡插件,将阿裡雲的彈性網卡配置設定給容器,支援基于Kubernetes标準的NetworkPolicy來定義容器間的通路政策,支援對單個容器做帶寬的限流。對于不需要使用Network

Policy的使用者,可以選擇Flannel,其他情況建議選擇Terway。

是以,本文主要介紹flannel的簡單使用。

系統

核心

docker

ip

主機名

配置

centos 7.6

3.10.0-957.el7.x86_64

19.03.5

192.168.128.130

k8s-master

2核4G

192.168.128.131

k8s-node01

192.168.128.132

k8s-node02

注意:請確定CPU至少2核,記憶體2G

二、準備工作

如果各個主機啟用了防火牆,需要開放Kubernetes各個元件所需要的端口,可以檢視Installing kubeadm中的”Check required ports”一節。 這裡簡單起見在各節點禁用防火牆:

修改 <code>/etc/fstab</code> 檔案,注釋掉 SWAP 的自動挂載(永久關閉swap,重新開機後生效)

安裝docker

這裡就不再叙述了,請參考連結:

https://www.cnblogs.com/xiao987334176/p/11771657.html

修改主機名

注意:主機名不能帶下劃線,隻能帶中劃線

否則安裝k8s會報錯

三、安裝kubeadm,kubelet,kubectl

在各節點安裝kubeadm,kubelet,kubectl

目前最新版本是:1.18.1

以上,就是master和node都需要操作的部分。

四、初始化Master節點

注意修改apiserver-advertise-address為master節點ip

參數解釋:

這一步很關鍵,由于kubeadm 預設從官網k8s.grc.io下載下傳所需鏡像,國内無法通路,是以需要通過–image-repository指定阿裡雲鏡像倉庫位址

叢集初始化成功後傳回如下資訊:

記錄生成的最後部分内容,此内容需要在其它節點加入Kubernetes叢集時執行。

輸出如下:

注意保持好kubeadm join,後面會用到的。

如果yml中的"Network": "10.244.0.0/16"和kubeadm init xxx --pod-network-cidr不一樣,就需要修改成一樣的。不然可能會使得Node間Cluster IP不通。

由于我上面的kubeadm init xxx --pod-network-cidr就是10.244.0.0/16。是以此yaml檔案就不需要更改了。

檢視yaml需要的鏡像

注意:這些鏡像都是需要通路谷歌才行的。

但是阿裡雲容器鏡像服務ACR裡面是有的,通路連結如下:

注意:必須使用阿裡雲賬号登入才行。

點選管理控制台

 點選左側的鏡像搜尋

輸入關鍵字:flannel:v0.12.0-amd64,選擇第二個。

點選複制公網位址

 由于我這裡是上海區域,是以域名是:registry.cn-shanghai。如果你選的是其他區域,域名也會不一樣。

下面就是我們需要的版本号。

那麼下載下傳鏡像的完整指令為:

其他鏡像,也都在這裡。

是以,所需要的鏡像下載下傳指令為:

為鏡像打tag,保持和yaml檔案一樣。

注意:這些鏡像,也需要在node節點執行。

加載flannel

等待幾分鐘,確定所有的Pod都處于Running狀态

注意:coredns容器的網段是10.244.0.0/16

設定開機啟動

(僅master)

必須退出一次,再次登入,就可以了 

五、node加入叢集

請檢視上文中的準備工作,確定都執行了!!!

修改主機名部分,改為k8s-node01

登入到node節點,確定已經安裝了docker和kubeadm,kubelet,kubectl

登入到master,使用指令檢視

登入到node節點,檢視ip

它會建立一個flannel.1網卡,用來做flannel網絡通信的。

七、使用yml釋出應用

以flaskapp為例子

flaskapp-deployment.yaml

flaskapp-service.yaml

加載yml檔案

檢視pod狀态

等待幾分鐘,確定為Running狀态

ping pod ip

確定能正常ping通,表示flannel網絡正常。

使用master ip+nodeport通路

效果如下:

注意:使用node節點ip+nodeport也可以通路。