使用虛擬機(jī)安裝部署Kubernetes集群(二)
本小節(jié)接上文,這一節(jié)我們將開(kāi)始部署 K8S 集群。
1. 拷貝虛擬機(jī)
本次部署的 K8s 集群由 1 個(gè) Master 節(jié)點(diǎn)和 3 個(gè) Worker 節(jié)點(diǎn)組成。上一節(jié)中我們已經(jīng)在 master-1 節(jié)點(diǎn)安裝了 Docker 和 K8s 運(yùn)行環(huán)境,另三個(gè)節(jié)點(diǎn)直接將這個(gè)虛擬機(jī)拷貝三份即可。
首先我們將 master-1 虛擬機(jī)關(guān)機(jī)。在 Virtualbox 管理控制臺(tái)主頁(yè)面,右鍵 master-1 虛擬機(jī),點(diǎn)擊復(fù)制...
。
選擇專(zhuān)家模式:
進(jìn)入專(zhuān)家模式,先設(shè)定新虛擬機(jī)名稱(chēng),這里使用 worker-1
方便區(qū)分,副本類(lèi)型選擇 完全復(fù)制
,MAC地址設(shè)定 為所有網(wǎng)卡重新生成MAC地址
。然后點(diǎn)擊復(fù)制,virtualbox 開(kāi)始復(fù)制虛擬機(jī)。
復(fù)制完成后,可以看到控制臺(tái)中出現(xiàn)了新的虛擬機(jī) worker-1。
我們一共需要三個(gè) worker 節(jié)點(diǎn),接下來(lái)再重復(fù)上面的步驟兩次,完成之后我們就擁有了四臺(tái)虛擬機(jī)。
2. 配置靜態(tài)IP和主機(jī)名
將所有虛擬機(jī)都啟動(dòng)起來(lái),在虛擬機(jī)中使用ip a
命令查看各個(gè)虛擬機(jī)的IP地址,由于默認(rèn)系統(tǒng)使用的DHCP服務(wù),網(wǎng)卡隨機(jī)獲取了當(dāng)前網(wǎng)段內(nèi)空閑的IP,地址我們希望各個(gè)節(jié)點(diǎn)的IP能固定起來(lái),不要隨意變動(dòng)。
根據(jù)當(dāng)前的網(wǎng)絡(luò)狀態(tài)(192.168.1.0/24網(wǎng)段),我們計(jì)劃節(jié)點(diǎn)配置如下:
Tips:
不同的網(wǎng)絡(luò)環(huán)境獲取的網(wǎng)段、IP 地址也不一致,需要根據(jù)自己的實(shí)際情況調(diào)整,設(shè)定變更的IP地址需要確認(rèn)沒(méi)有被占用。
虛擬機(jī)名稱(chēng) | IP地址 | 主機(jī)名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 的主機(jī)名
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 地址:
# 默認(rèn)的網(wǎng)卡名稱(chē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ù)實(shí)際情況進(jìn)行修改
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的主機(jī)名和IP更改。
3. 對(duì)worker-1、 worker-2、worker-3節(jié)點(diǎn)進(jìn)行上述操作,一定要注意主機(jī)名和IP地址變更。
3. 配置Master節(jié)點(diǎn)
使用宿主機(jī)的命令行工具 ssh 登錄到 master-1 節(jié)點(diǎn),先讀取我們的 K8s 版本號(hào):
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
使用此配置文件進(jìn)行 master 節(jié)點(diǎn)安裝部署:
kubeadm init --config kubeadm.yaml
等待一段時(shí)間,部署完成,它會(huì)給我們一段提示
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é)點(diǎn)上進(jìn)行如下操作可以將節(jié)點(diǎn)添加到K8s集群,但現(xiàn)在還不急,先記下來(lái)。
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \
--discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
執(zhí)行kubectl get nodes
查看當(dāng)前節(jié)點(diǎn)的狀態(tài):
發(fā)現(xiàn)狀態(tài)為NotReady
,原因是我們尚未配置網(wǎng)絡(luò)相關(guān)的插件,一些跟k8s服務(wù)相關(guān)容器無(wú)法連接到網(wǎng)絡(luò)。
常用的容器網(wǎng)絡(luò)接口插件有 Flannel 、Calico、 Weave 等,這里我們選擇簡(jiǎn)單易用的 weave 網(wǎng)絡(luò)插件
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$version
安裝完畢后,查看當(dāng)前節(jié)點(diǎn)狀態(tài)變?yōu)?code>Ready。
4. 配置 Worker 節(jié)點(diǎn)
在三個(gè) Worker 節(jié)點(diǎn)上執(zhí)行之前記錄的增加節(jié)點(diǎn)指令
Tips: 記得替換成自己操作環(huán)境中獲取的指令
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \
--discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
耐心等待 3-5 分鐘,在 master 節(jié)點(diǎn)執(zhí)行kubectl get nodes -o wide
查看節(jié)點(diǎn)詳情,所有節(jié)點(diǎn)狀態(tài)均為Ready
。
至此,K8s 集群已經(jīng)初步搭建完成。
5. 小結(jié)
我們使用 kubeadm 部署了一個(gè)“1 master + 3 worker” Kubernetes 集群,使用 Weave 網(wǎng)絡(luò)插件,已初步可用。