亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

首頁 慕課教程 Docker 入門教程 Docker 入門教程 使用虛擬機安裝部署Kubernetes集群(二)

使用虛擬機安裝部署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

輸入命令hostnameip 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。

image-20200714010704387

至此,K8s 集群已經初步搭建完成。

5. 小結

我們使用 kubeadm 部署了一個“1 master + 3 worker” Kubernetes 集群,使用 Weave 網絡插件,已初步可用。