01 集群環(huán)境準(zhǔn)備
1.1 集群架構(gòu)
Kubernetes集群架構(gòu)大體分為兩種:單 Master 節(jié)點(diǎn)集群和多 Master 節(jié)點(diǎn)集群。
- 單 Master 節(jié)點(diǎn)集群:由一個(gè) Master 節(jié)點(diǎn)和一個(gè)或多個(gè) Node 節(jié)點(diǎn)組成,有單機(jī)風(fēng)險(xiǎn),適用于測試環(huán)境。
- 多 Master 節(jié)點(diǎn)集群:由多個(gè) Master 節(jié)點(diǎn)和一個(gè)或多個(gè) Node 節(jié)點(diǎn)組成,實(shí)現(xiàn)高可用,適用于生產(chǎn)環(huán)境。
本次教程使用多 Master 節(jié)點(diǎn)集群架構(gòu)。
1.2 部署方式
集群部署方式有多種,目前主流的方式有 minikube、kubeadm、二進(jìn)制軟件包。
minikube:用于快速搭建單節(jié)點(diǎn)的 Kubernetes 集群的工具。
kubeadm:用于快速搭建 Kubernetes 集群的工具。
二進(jìn)制軟件包:從官網(wǎng)下載各個(gè)組件的二進(jìn)制軟件包依次去部署,此方式可以深入理解 Kubernetes 各個(gè)組件。
1.3 服務(wù)器規(guī)劃
本地主機(jī)資源有限,etcd 和 Master、Node 全部部署在一起。
| 角色 | 主機(jī)名 | IP地址 | 操作系統(tǒng) | 內(nèi)核版本 |
|---|---|---|---|---|
| master、node | k8s-master-01 | 192.168.3.201 | centos 7.9 | 3.10 |
| master、node | k8s-master-02 | 192.168.3.202 | centos 7.9 | 3.10 |
| master、node | k8s-master-03 | 192.168.3.203 | centos 7.9 | 3.10 |
| 本地主機(jī)(非集群服務(wù)器) | 192.168.3.100 | centos 7.9 | 3.10 |
本地主機(jī)的用途如下:
1、下載各個(gè)組件的二進(jìn)制軟件包,分發(fā)到集群服務(wù)器上;
2、生成 SSL 證書,分發(fā)到集群服務(wù)器上;
3、生成服務(wù)配置文件,分發(fā)到集群服務(wù)器上;
4、生成服務(wù)啟動(dòng)管理文件,分發(fā)到集群服務(wù)器上;
5、生成 kubeconfig 憑證文件,分發(fā)到集群服務(wù)器上。
1.4 軟件規(guī)劃
| 軟件名 | 版本 |
|---|---|
| kube-apiserver | v1.23.6 |
| kube-controller-manager | v1.23.6 |
| kube-scheduler | v1.23.6 |
| kube-proxy | v1.23.6 |
| kubelet | v1.23.6 |
| kubectl | v1.23.6 |
| containerd | v1.6.4 |
| runc | v1.1.1 |
| calico | v3.21.6 |
| coredns | v1.8.6 |
| cfssl | v1.2.0 |
| etcd | v3.5.2 |
cfssl 工具包相關(guān)的命令存放在本地主機(jī),主要是用來生成 SSL 證書。
calico 和 coredns 不需要下載二進(jìn)制軟件包,通過
yaml文件來部署。
1.5 目錄規(guī)劃
| 目錄路徑 | 備注 |
|---|---|
| /etc/kubernetes/tls | SSL 證書的目錄 |
| /etc/kubernetes/conf | 各個(gè)組件服務(wù)配置文件的目錄 |
| /etc/kubernetes/kubeconfig | 各個(gè)組件 kubeconfig 憑證文件的目錄 |
| /var/lib/kube-proxy | kube-proxy 組件工作的目錄 |
| /var/lib/etcd | etcd 數(shù)據(jù)存儲的目錄 |
| /usr/local/bin | 二進(jìn)制命令的目錄 |
| /~/.kube | kubectl kubeconfig 憑證的目錄 |
| /etc/containerd | containerd 容器運(yùn)行時(shí)的配置文件目錄 |
1.6 網(wǎng)絡(luò)規(guī)劃
| IP地址/網(wǎng)段 | 備注 |
|---|---|
| 192.168.3.0/24 | 宿主機(jī)網(wǎng)絡(luò) |
| 172.16.0.0/12 | Pod 資源網(wǎng)段 |
| 10.0.0.0/12 | Service 資源網(wǎng)段 |
| 10.0.0.1 | kubernetes Service 資源的IP地址(生成 kube-apiserver 證書時(shí) hosts 字段要加入該地址) |
| 10.0.0.2 | CoreDNS Service 資源的IP地址(要在 coredns.yaml 中修改) |