iT邦幫忙

2024 iThome 鐵人賽

DAY 6
2
Kubernetes

成為 Kubernetes 特級咒術師的 30 天修行系列 第 6

第六篇: 展開第一個 Kubernetes Cluster 領域

  • 分享至 

  • xImage
  •  

前言

前兩天我們分別介紹了 Kubernetes 的架構和虛擬機的設定,這些內容為我們展開 Kubernetes Cluster 做好了準備。今天,我們將實際展開第一個 Kubernetes Cluster 的領域,學會這個能讓我們更快速升到特級咒術師,所以一起加油吧。

https://ithelp.ithome.com.tw/upload/images/20240907/20140874b8gckmG6Ba.png

在 Control Plane & Node 上 Kubernetes 環境安裝

  • 修改 host file。

    在多節點 Kubernetes Cluster 中,每個節點都必須能夠通過主機名互相通信,因此需要修改 hosts 檔案,為每個節點分配 IP 地址與主機名的映射。

$ nano /etc/hosts

# 例如 :
# 10.0.2.14 g8master
# 10.0.2.15 g8node1
# 10.0.2.16 g8node2
  • Install Docker。

    Kubernetes 使用容器來運行應用程式,Docker 是目前最常見的容器運行時(Container Runtime)。在開始安裝 Kubernetes 之前,我們需要先安裝 Docker。

    安裝完成後,可以使用 docker --version 來確認 Docker 是否成功安裝。

$ apt-get update
$ apt-get install -y docker.io
  • 更新apt套件並安裝使用 Kubernetesapt儲存庫所需的套件(V1.29)。

    • Kubernetes 需要一些額外的套件來進行安裝和運行。我們需要先安裝這些必要的依賴套件。

    $ apt-get update
    
    $ apt-get install -y apt-transport-https ca-certificates curl gpg
    
    • 下載 Kubernetes 套件儲存庫的公共簽署金鑰(V1.29)。

    $ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    
    • 新增適當的 Kubernetesapt 儲存庫(V1.29)。

    $ echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
    • 更新apt套件,安裝 kubelet、kubeadm 和 kubectl(V1.29)。

      $ sudo apt-get update
      $ sudo apt-get install -y kubelet kubeadm kubectl
      $ sudo apt-mark hold kubelet kubeadm kubectl
      

在 Control Plane 上執行設定集群

  • 初始化 Control Plane ,使用Flannel CNI,則改為10.244.0.0/16。

$ sudo kubeadm init --pod-network-cidr=<ip-of-container-network-interface>
  • 初始化成功後會產生以下文本。

image

  • 依序輸入系統給的三個指令。

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 如果 Token 過期,新增 Token(token的有效期限default為24小時)。

$ kubeadm token create
  • 然後通過下列指令查看新的token。

$ kubeadm token list
  • 獲取 ca 認證 sha256 編碼的 hash 值

$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

將 Node 加入此集群

  • 執行最後兩行指令即可將 Node 加入此集群。

$ kubeadm join 192.168.67.128:6443 --token <token> \
    --discovery-token-ca-cert-hash sha256:<sha256>
  • 回到 Control Plane 看一下是否成功加入。

$ kubectl get no

image

Control Plane 安裝 CNI。

在上面初始化 Kubernetes Cluster 之後,所有的節點(Node)都會顯示為 NotReady 狀態。這是因為 Kubernetes 需要一個網絡插件來管理和配置集群中所有 Pod 的網絡連接,而 CNI(容器網絡接口)還沒有安裝和配置。

我們將使用 Flannel 作為 CNI 插件來配置網絡。Flannel 是 Kubernetes 中最常用的 CNI 插件之一,簡單易用,並且與大多數 Kubernetes 部署兼容。

當 CNI 成功部署並生效後,Kubernetes 會自動將每個節點的狀態更新為 Ready。這意味著:

  • Pod 網絡配置完成:所有 Pod 都已經被分配了 IP 地址,並且可以相互通信。

  • 網絡插件正常運行:Flannel 已經成功安裝,並開始管理集群中的網絡流量。

  • 集群準備就緒:所有節點都已經準備好運行工作負載,你可以開始在 Kubernetes 集群上部署應用程序。

  • 下載 Flannel yaml 檔。

wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  • 部屬 Flannel yaml 檔。

kubectl apply -f kube-flannel.yml
  • 看一下 Node 是否 Ready。

$ kubectl get no

image

◆ 每日咒術小知識

https://ithelp.ithome.com.tw/upload/images/20240908/20140874whltMwHAaQ.jpg

參考資料

https://ithelp.ithome.com.tw/m/articles/10295266

https://kubernetes.io/blog/2023/12/13/kubernetes-v1-29-release/


上一篇
第五篇: 領域展開 Kubernetes
下一篇
第七篇: 簡易領域 Pod & Static Pod
系列文
成為 Kubernetes 特級咒術師的 30 天修行30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
雷N
iT邦研究生 1 級 ‧ 2024-09-07 16:04:20

最上面的圖片似乎無法顯示

Knut iT邦新手 3 級 ‧ 2024-09-07 18:45:08 檢舉

感謝您的留言,我會儘速將圖片重新上傳

我要留言

立即登入留言