使用Kubeadm创建k8s集群之部署规划(三十一)
前言? ? ? ? ?
上一篇我們講述了使用Kubectl管理k8s集群,那么接下來,我們將使用kubeadm來啟動k8s集群。
部署k8s集群存在一定的挑戰,尤其是部署高可用的k8s集群更是頗為復雜(后續會講)。因此本教程會在部署的過程中穿插講解一些部署相關知識、原理和步驟,比如kubeadm、kubelet以及啟動集群時的實際部署動作等等。整個部署過程全部腳本化,以便各位參考和學習。
因整個集群部署教程篇幅較長,因此會拆分成幾篇進行說明。
目錄
使用Kubeadm創建k8s集群
Kubeadm概述?
Kubelet概述?
定義集群部署目標和規劃?
部署規劃
使用Kubeadm創建k8s集群
Kubeadm概述
Kubeadm 是一個命令行工具,它主要提供了“kubeadm init” 以及 “kubeadm join”這兩個命令來快速創建和初始化kubernetes 集群。
Kubeadm通過執行必要的操作來啟動和運行一個最小可用的集群。它被故意設計為只關心啟動集群,而不是之前的節點準備工作。同樣的,諸如安裝各種各樣的插件,例如 Kubernetes Dashboard、監控解決方案以及特定云提供商的插件,這些都不在它負責的范圍。
主要命令
其主要命令和說明如下表所示:
命令 | 說明 |
kubeadm init | 啟動一個Kubernetes主節點 |
kubeadm join | 啟動一個Kubernetes工作節點并且將其加入到集群 |
kubeadm upgrade | 更新一個 Kubernetes 集群到新版本 |
kubeadm config | 查看存儲在集群中的kubeadm配置,例如“kubeadm config images list”可以列出kubeadm需要的鏡像 |
kubeadm token | 令牌管理 |
kubeadm reset | 重置集群,也就是將還原kubeadm init 或者 kubeadm join 對主機所做的任何更改 |
kubeadm version | 打印 kubeadm 版本 |
Kubelet概述
kubelet 是在每個節點上運行的主要“節點代理”。簡單地說,kubelet 的主要功能就是定時獲取節點上pod/container 的期望狀態(運行什么容器、運行的副本數量、網絡或者存儲如何配置等等),并調用對應的容器平臺接口達到這個狀態,并確保它們能夠健康的運行。因此,kubelet的主要功能為:
pod管理
容器健康檢查
容器監控
注意,不是 Kubernetes創建的容器將不在 kubelet 的管理范圍。
了解了這些,接下來,我們來使用Kubeadm來創建集群。
定義集群部署目標和規劃
有目標,我們才能有的放矢。在本節內容中,我們將基于三臺虛擬機來搭建一個k8s集群,其中一臺作為主節點,另外兩臺作為工作節點。
具體部署架構如下所示:
1.安裝規劃
服務器規劃:
主機名稱 | 操作系統 | IP | 系統配置 | 備注 |
k8s-master | CentOS-7-x86_64 | 172.16.2.201 | 2核2G | 作為主節點 |
k8s-node1 | CentOS-7-x86_64 | 172.16.2.202 | 2核2G | 作為工作節點 |
k8s-node2 | CentOS-7-x86_64 | 172.16.2.203 | 2核2G | 作為工作節點 |
值得注意的是:
服務器最小內存不得小于2G,CPU核心數最少為2;
群集中所有的計算機之間擁有完全的網絡連接(公共或專用網絡);
所有機器都有sudo權限;
相關環境的搭建和初始化筆者這里先行略過。
以下內容均使用root賬戶安裝和配置。
Pod 分配 IP 段:10.244.0.0/16
kubernetes-version:v1.15.0
apiserver-advertise-address:172.16.2.201
部署規劃
接下來,我們就開始按規劃進行部署。主體步驟如下所示:
1.主機和IP設置
各節點主機名稱和IP設置如表所示:
主機名稱 | IP |
k8s-master | 172.16.2.201 |
k8s-node1 | 172.16.2.202 |
k8s-node2 | 172.16.2.203 |
接下來我們以master(k8s-master)為例,相關設置步驟如下所示(請注意替換相關參數):
設置主機名稱以及修改主機記錄
配置網絡服務以及設置固定IP
系統設置
2.Docker安裝
這里推薦使用以下腳本來安裝官方已經充分測試過的指定版本的Docker-ce以及設置加速器:
# 安裝必須的包 yum install yum-utils device-mapper-persistent-data lvm2 # 添加Docker倉庫 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安裝指定版本的Docker CE yum update && yum install docker-ce-18.06.2.ce # 創建 /etc/docker 目錄 mkdir /etc/docker # 設置守護程序 cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] , "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] } EOF mkdir -p /etc/systemd/system/docker.service.d # 重啟Docker服務 systemctl daemon-reload systemctl enable docker systemctl restart docker3.主機端口設置
主節點端口設置:
協議 | 方向 | 端口 | 說明 |
TCP | 入站 | 6443* | Kubernetes API server |
TCP | 入站 | 2379-2380 | etcd server client API |
TCP | 入站 | 10250 | Kubelet API |
TCP | 入站 | 10251 | kube-scheduler |
TCP | 入站 | 10252 | kube-controller-manager |
工作節點端口設置:
協議 | 方向 | 端口 | 說明 |
TCP | 入站 | 10250 | Kubelet API |
TCP | 入站 | 30000-32767 | NodePort Services |
CentOS默認沒有安裝防火墻,需要使用以下命令安裝和啟用防火墻:
#安裝iptables服務 yum install iptables-services systemctl enable iptables.service systemctl start iptables.service
然后使用編輯器按Demo編輯文件/etc/sysconfig/iptables設置準入端口即可。
在開發實驗階段,為了方便,大家也可以直接禁用防火墻:
systemctl stop firewalld.service systemctl disable firewalld.service往期內容
Docker+ Kubernetes已成為云計算的主流(二十六)
容器化之后如何節省云端成本?(二十七)
了解Kubernetes主體架構(二十八)
使用Minikube部署本地Kubernetes集群(二十九)
使用kubectl管理k8s集群(三十)
如果喜歡作者的文章,請關注“magiccodes”訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
文檔官網:docs.xin-lai.com
QQ群:
編程交流群<85318032>?
產品交流群<897857351>
總結
以上是生活随笔為你收集整理的使用Kubeadm创建k8s集群之部署规划(三十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐10个技术圈优质的公众号大号
- 下一篇: 荐读|属性与可直接访问的数据成员之间应该