使用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)為例,相關設置步驟如下所示(請注意替換相關參數):

  • 設置主機名稱以及修改主機記錄

bash:
#設置Host名稱
hostnamectl set-hostname k8s-master #查看host名稱
hostname #修改Host文件,給127.
0.0.1添加hostname
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 k8s-master
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
"> /etc/hosts #查看修改結果
cat
/etc/hosts

  • 配置網絡服務以及設置固定IP

bash:
#配置網卡
echo "

DEVICE=eth0
TYPE=Ethernet
IPADDR=172.16.2.201
PREFIX=24
NETMASK=255.255.255.0
NETWORK=172.16.2.0
GATEWAY=172.16.2.254
BROADCAST=172.16.2.255
DEFROUTE=yes
ONBOOT=yes
USERCTL=yes
BOOTPROTO=static
NAME=eth0
IPV4_FAILURE_FATAL=yes
UUID=5ed1bf4a-4be2-4040-ad55-fea853b849d1
"> /etc/sysconfig/network-scripts/ifcfg-eth0 #編輯/etc/sysconfig/network
echo "NETWORKING=yes
HOSTNAME=k8s-master
"> /etc/sysconfig/network #編輯/etc/resolv.conf,設置DNS
echo "nameserver 172.16.2.254
nameserver 114.114.114.114
nameserver 8.8.8.8
"> /etc/resolv.conf #重啟網絡服務systemctl restart network.service #重啟網絡服務
systemctl status network.service #查看網絡服務狀態

  • 系統設置

bash:
#關閉Selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

#永久關閉
Swapswapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
echo "vm.swappiness = 0">> /etc/sysctl.conf  

#修改內核參數cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF

 

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 CEyum 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 docker

3.主機端口設置

  • 主節點端口設置:

協議

方向

端口

說明

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.servicesy
stemctl start iptables.service

然后使用編輯器按Demo編輯文件/etc/sysconfig/iptables設置准入端口即可。

在開發實驗階段,為了方便,大家也可以直接禁用防火牆:

systemctl stop firewalld.service
systemctl disable firewalld.service

 

往期內容鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM