網站:https://blog.51cto.com/u_3241766/2405624
環境說明:
主機名 | 操作系統版本 | ip | docker version | kubelet version | kubeadm version | kubectl version | flannel version | 備注 |
---|---|---|---|---|---|---|---|---|
master | Centos 7.6.1810 | 172.27.9.131 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | master主機 |
node01 | Centos 7.6.1810 | 172.27.9.135 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | node節點 |
node02 | Centos 7.6.1810 | 172.27.9.136 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | node節點 |
Centos7.6安裝詳見:Centos7.6操作系統安裝及優化全紀錄
Kubernetes這個名字源自希臘語,意思是“舵手”,也是“管理者”,“治理者”等詞的源頭。k8s是Kubernetes的簡稱(用數字『8』替代中間的8個字母『ubernete』)
**前言:**本文通過kudeadm方式在centos7.6上安裝kubernetes v1.14.2集群(目前centos和kubernetes都為最新版),共分為六個部分:
一、Docker安裝;
二、k8s安裝准備工作;
三、Master節點安裝;
四、Node節點安裝;
五、Dashboard安裝;
六、集群測試。
一、Docker安裝
所有節點都需要安裝docker
1. 安裝依賴包
2. 設置Docker源
3. 安裝Docker CE
3.1 docker安裝版本查看
3.2 安裝docker
指定安裝的docker版本為18.09.6,由於該版本目前為最新版,故可以直接安裝,不用指定版本:
4. 啟動Docker
5. 命令補全
5.1 安裝bash-completion
5.2 加載bash-completion
6. 鏡像加速
由於Docker Hub的服務器在國外,下載鏡像會比較慢,可以配置鏡像加速器。主要的加速器有:Docker官方提供的中國registry mirror、阿里雲加速器、DaoCloud 加速器,本文以阿里加速器配置為例。
6.1 登陸阿里雲容器模塊
登陸地址為:https://cr.console.aliyun.com ,未注冊的可以先注冊阿里雲賬戶
6.2 配置鏡像加速器
配置daemon.json文件
重啟服務
加速器配置完成
7. 驗證
通過查詢docker版本和運行容器hello-world來驗證docker是否安裝成功。
二、k8s安裝准備工作
安裝Centos是已經禁用了防火牆和selinux並設置了阿里源。master和node節點都執行本部分操作。
1. 配置主機名
1.1 修改主機名
退出重新登陸即可顯示新設置的主機名master
1.2 修改hosts文件
2. 驗證mac地址uuid
保證各節點mac和uuid唯一
3. 禁用swap
3.1 臨時禁用
3.2 永久禁用
若需要重啟后也生效,在禁用swap后還需修改配置文件/etc/fstab,注釋swap
4. 內核參數修改
4.1 臨時修改
4.2 永久修改
5. 修改Cgroup Driver
5.1 修改daemon.json
修改daemon.json,新增‘“exec-opts”: [“native.cgroupdriver=systemd”’
5.2 重新加載docker
修改cgroupdriver是為了消除告警:
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
6. 設置kubernetes源
6.1 新增kubernetes源
- [] 中括號中的是repository id,唯一,用來標識不同倉庫
- name 倉庫名稱,自定義
- baseurl 倉庫地址
- enable 是否啟用該倉庫,默認為1表示啟用
- gpgcheck 是否驗證從該倉庫獲得程序包的合法性,1為驗證
- repo_gpgcheck 是否驗證元數據的合法性 元數據就是程序包列表,1為驗證
- gpgkey=URL 數字簽名的公鑰文件所在位置,如果gpgcheck值為1,此處就需要指定gpgkey文件的位置,如果gpgcheck值為0就不需要此項了
6.2 更新緩存
三、Master節點安裝
1. 版本查看
目前最新版是1.14.2,該版本支持的docker版本為1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09。
2. 安裝kubelet、kubeadm和kubectl
2.1 安裝三個包
若不指定版本直接運行‘yum install -y kubelet kubeadm kubectl’則默認安裝最新版即1.14.2,兩種方式結果一致。
2.2 安裝包說明
- kubelet 運行在集群所有節點上,用於啟動Pod和容器等對象的工具
- kubeadm 用於初始化集群,啟動集群的命令工具
- kubectl 用於和集群通信的命令行,通過kubectl可以部署和管理應用,查看各種資源,創建、刪除和更新各種組件
2.3 啟動kubelet
啟動kubelet並設置開機啟動
2.4 kubelet命令補全
3. 下載鏡像
3.1 鏡像下載的腳本
Kubernetes幾乎所有的安裝組件和Docker鏡像都放在goolge自己的網站上,直接訪問可能會有網絡問題,這里的解決辦法是從阿里雲鏡像倉庫下載鏡像,拉取到本地以后改回默認的鏡像tag。
url為阿里雲鏡像倉庫地址,version為安裝的kubernetes版本。
3.2 下載鏡像
運行腳本image.sh,下載指定版本的鏡像,運行腳本前先賦權。
4. 初始化Master
4.1 初始化
apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod網絡的范圍,這里使用flannel網絡方案。
記錄kubeadm join的輸出,后面需要這個命令將各個節點加入集群中。
4.2 加載環境變量
本文所有操作都在root用戶下執行,若為非root用戶,則執行如下操作:
5. 安裝pod網絡
6. master節點配置
taint:污點的意思。如果一個節點被打上了污點,那么pod是不允許運行在這個節點上面的
6.1 刪除master節點默認污點
默認情況下集群不會在master上調度pod,如果偏想在master上調度Pod,可以執行如下操作:
查看污點:
刪除默認污點:
6.2 污點機制
語法:
打污點
key為key1,value為value1(value可以為空),effect為NoSchedule表示一定不能被調度
刪除污點:
刪除指定key所有的effect,‘-’表示移除所有以key1為鍵的污點
四、Node節點安裝
1. 安裝kubelet、kubeadm和kubectl
同master節點
2. 下載鏡像
同master節點
3. 加入集群
以下操作master上執行
3.1 查看令牌
發現之前初始化時的令牌已過期
3.2 生成新的令牌
3.3 生成新的加密串
3.4 node節點加入集群
在node節點上分別執行如下操作:
五、Dashboard安裝
1. 下載yaml
如果連接超時,可以多試幾次
2. 配置yaml
2.1 修改鏡像地址
由於默認的鏡像倉庫網絡訪問不通,故改成阿里鏡像
2.2 外網訪問
配置NodePort,外部通過https://NodeIp:NodePort 訪問Dashboard,此時端口為30001
2.3 新增管理員帳號
創建超級管理員的賬號用於登錄Dashboard
3. 部署訪問
3.1 部署Dashboard
3.2 狀態查看
3.3 令牌查看
令牌為:
3.4 訪問
請使用火狐瀏覽器訪問
通過令牌方式登錄
Dashboard提供了可以實現集群管理、工作負載、服務發現和負載均衡、存儲、字典配置、日志視圖等功能。
六、集群測試
1. 部署應用
1.1 命令方式
通過命令行方式部署apache服務
1.2 配置文件方式
通過配置文件方式部署nginx服務
2. 狀態查看
2.1 查看節點狀態
2.2 查看pod狀態
2.3 查看副本數
可以看到nginx和httpd的3個副本pod均勻分布在3個節點上
2.4 查看deployment詳細信息
2.5 查看集群基本組件狀態
至此完成Centos7.6下k8s(v1.14.2)集群部署。
k8s主備高可用部署詳見:Centos7.6部署k8s v1.16.4高可用集群(主備模式)
k8s集群高可用部署詳見:lvs+keepalived部署k8s v1.16.4高可用集群
本文所有腳本和配置文件已上傳github:https://github.com/loong576/Centos7.6-install-k8s-v1.14.2-cluster.git
本文參考:
1.https://docs.docker.com/install/linux/docker-ce/centos;
2.https://kubernetes.io/docs/setup/independent/install-kubeadm;
3.https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm;
4.https://github.com/coreos/flannel;
5.https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#external-dependencies;
6.https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/;