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