使用虛擬機安裝部署Kubernetes集群(二)
本小節(jié)接上文,這一節(jié)我們將開始部署 K8S 集群。
1. 拷貝虛擬機
本次部署的 K8s 集群由 1 個 Master 節(jié)點和 3 個 Worker 節(jié)點組成。上一節(jié)中我們已經(jīng)在 master-1 節(jié)點安裝了 Docker 和 K8s 運行環(huán)境,另三個節(jié)點直接將這個虛擬機拷貝三份即可。
首先我們將 master-1 虛擬機關(guān)機。在 Virtualbox 管理控制臺主頁面,右鍵 master-1 虛擬機,點擊復(fù)制...
。
選擇專家模式:
進入專家模式,先設(shè)定新虛擬機名稱,這里使用 worker-1
方便區(qū)分,副本類型選擇 完全復(fù)制
,MAC地址設(shè)定 為所有網(wǎng)卡重新生成MAC地址
。然后點擊復(fù)制,virtualbox 開始復(fù)制虛擬機。
復(fù)制完成后,可以看到控制臺中出現(xiàn)了新的虛擬機 worker-1。
我們一共需要三個 worker 節(jié)點,接下來再重復(fù)上面的步驟兩次,完成之后我們就擁有了四臺虛擬機。
2. 配置靜態(tài)IP和主機名
將所有虛擬機都啟動起來,在虛擬機中使用ip a
命令查看各個虛擬機的IP地址,由于默認系統(tǒng)使用的DHCP服務(wù),網(wǎng)卡隨機獲取了當前網(wǎng)段內(nèi)空閑的IP,地址我們希望各個節(jié)點的IP能固定起來,不要隨意變動。
根據(jù)當前的網(wǎng)絡(luò)狀態(tài)(192.168.1.0/24網(wǎng)段),我們計劃節(jié)點配置如下:
Tips:
不同的網(wǎng)絡(luò)環(huán)境獲取的網(wǎng)段、IP 地址也不一致,需要根據(jù)自己的實際情況調(diào)整,設(shè)定變更的IP地址需要確認沒有被占用。
虛擬機名稱 | IP地址 | 主機名hostname |
---|---|---|
master-1 | 192.168.1.200 | master1.node |
worker-1 | 192.168.1.201 | worker1.node |
worker-2 | 192.168.1.202 | worker2.node |
worker-3 | 192.168.1.203 | worker3.node |
1. 設(shè)定 master-1 的主機名
declare -x HOSTNAME="master1.node"
hostname $HOSTNAME
cat << EOF > /etc/hostname
$HOSTNAME
EOF
cat << EOF > /etc/hosts
127.0.0.1 $HOSTNAME
192.168.1.200 master1.node
192.168.1.201 worker1.node
192.168.1.202 worker2.node
192.168.1.203 worker3.node
EOF
2. 設(shè)定 master-1 的 IP 地址:
# 默認的網(wǎng)卡名稱就是enp0s3
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="enp0s3"
DEVICE="enp0s3"
ONBOOT="yes"
# 指定IP地址、網(wǎng)關(guān)和掩碼,根據(jù)實際情況進行修改
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=223.6.6.6
保存更改后執(zhí)行:
# 重載網(wǎng)口配置
nmcli c reload
輸入命令hostname
和ip a
查看master-1的主機名和IP更改。
3. 對worker-1、 worker-2、worker-3節(jié)點進行上述操作,一定要注意主機名和IP地址變更。
3. 配置Master節(jié)點
使用宿主機的命令行工具 ssh 登錄到 master-1 節(jié)點,先讀取我們的 K8s 版本號:
version=`cat .k8s.version`
設(shè)定kubeadm配置文件kubeadm.yaml
cat << EOF > kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
controllerManager:
extraArgs:
horizontal-pod-autoscaler-use-rest-clients: "true"
horizontal-pod-autoscaler-sync-period: "10s"
node-monitor-grace-period: "10s"
apiServer:
extraArgs:
runtime-config: "api/all=true"
kubernetesVersion: "v$version"
imageRepository: "registry.aliyuncs.com/google_containers"
EOF
使用此配置文件進行 master 節(jié)點安裝部署:
kubeadm init --config kubeadm.yaml
等待一段時間,部署完成,它會給我們一段提示
master-1上執(zhí)行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Tips: 在worker節(jié)點上進行如下操作可以將節(jié)點添加到K8s集群,但現(xiàn)在還不急,先記下來。
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \
--discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
執(zhí)行kubectl get nodes
查看當前節(jié)點的狀態(tài):
發(fā)現(xiàn)狀態(tài)為NotReady
,原因是我們尚未配置網(wǎng)絡(luò)相關(guān)的插件,一些跟k8s服務(wù)相關(guān)容器無法連接到網(wǎng)絡(luò)。
常用的容器網(wǎng)絡(luò)接口插件有 Flannel 、Calico、 Weave 等,這里我們選擇簡單易用的 weave 網(wǎng)絡(luò)插件
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$version
安裝完畢后,查看當前節(jié)點狀態(tài)變?yōu)?code>Ready。
4. 配置 Worker 節(jié)點
在三個 Worker 節(jié)點上執(zhí)行之前記錄的增加節(jié)點指令
Tips: 記得替換成自己操作環(huán)境中獲取的指令
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \
--discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
耐心等待 3-5 分鐘,在 master 節(jié)點執(zhí)行kubectl get nodes -o wide
查看節(jié)點詳情,所有節(jié)點狀態(tài)均為Ready
。
至此,K8s 集群已經(jīng)初步搭建完成。
5. 小結(jié)
我們使用 kubeadm 部署了一個“1 master + 3 worker” Kubernetes 集群,使用 Weave 網(wǎng)絡(luò)插件,已初步可用。