iT邦幫忙

2022 iThome 鐵人賽

DAY 21
1
DevOps

30天準備CKA考試系列 第 21

Day 21:使用kubeadm建立集群

  • 分享至 

  • xImage
  •  

昨天提到怎麼安裝kubeadm以及準備實驗環境,今天來討論如何建立集群~

流程會是先初始化Control-Plane ⇒ 安裝Pod網路插件 ⇒ 加入Worker Node

# Control-Plane Node初始化
kubeadm init <args>

所謂Control-Plane Node是指Master Node,這些Node上會擁有etcd、API Server等元件。

我們可以從上面發現,這代表了在初始化時可以加入的參數,那我們來看看有哪些常用的參數吧~

  • --control-plane-endpoint:如果打算建立HA(High Availability)集群,則需要設定這個,可以輸入Load balancer的DNS名稱或是IP,HA的部分會在未來說明。
  • --pod-network-cidr:是否需要加上這個參數,取決於要使用的Pod網路插件。
  • --cri-socket:如果安裝多個Container Runtime就可以透過這個參數來指定。
  • --apiserver-advertise-address=:kubeadm會使用預設的IP來當作API Server的IP,如果想要指定其他的IP就需要透過這個參數來指定。
  • --kubernetes-version:kubeadm預設會使用最新版的Kubernetes,如果想要指定版本就需要加入的這個參數。

––control-plane-endpoint和––apiserver-advertise-address的差異為前者是指集群,而後者是Master Node。

接下來我們就可以開始初始化了~

初始化成功後我們會看到下列訊息:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a Pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  /docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

系統會提示要輸入以下指令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

然後這邊顯示的kubeadm join指令與參數紀錄一下,之後要加入其他Node時會用到,但是現在暫時用不到。

 kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

安裝Pod網路插件

在這個階段要注意的是我們的Pod網路插件不能和任何主機網路重疊,如果發現目前使用的Pod網路插件和其他主機網路有衝突,可以在kubeadm init時,使用--pod-network-cidr來變更。

有很多基於Pod網路插件的CNI(Container Network Interface),我個人比較熟悉的是flannel:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

安裝後,我們現在可以確認CoreDNS Pod是否正常運作,如果正常運作的話會顯示Running:

kubectl get pods --all-namespaces

加入Node

在這個階段我們需要做到:

  • 連至Node:可以使用SSH或是其他方式。

  • 擁有root權限

    sudo su -
    
  • 安裝Container Runtime

  • 輸入剛才kubeadm init得到的指令

     kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    

接下來確認是否集群建立成功:

kubectl get nodes

如果所有Node都是Ready就可以了~

參考資料

使用 kubeadm 创建集群

flannel


上一篇
Day 20:使用kubeadm建立集群 - 前置作業
下一篇
Day 22:建立Highly Available集群 (1)
系列文
30天準備CKA考試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言