如何在 CentOS 7 上安裝 Kubernetes 叢集
Kubernetes 是一個流行的開源平臺,用於在叢集環境中管理容器化應用程式。如果您想在 CentOS 7 上安裝 Kubernetes,本指南將逐步引導您完成此過程。我們將涵蓋您需要了解的所有內容,以啟動和執行叢集,包括設定環境、安裝必要的元件以及配置節點。
先決條件
在開始之前,您需要以下幾個條件 -
至少具有 2GB RAM 和 2 個 CPU 的 CentOS 7 伺服器。
伺服器的 root 訪問許可權。
基本的 Linux 命令列使用知識。
設定環境
首先,我們需要設定我們的環境。這包括停用 SELinux 和配置防火牆。
停用 SELinux
SELinux 是 Linux 的一項安全增強功能,有時會干擾 Kubernetes。要停用它,請在您選擇的文字編輯器中開啟 /etc/selinux/config 檔案,並將 SELINUX 的值更改為 disabled。儲存並關閉檔案。
$ sudo vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
配置防火牆
接下來,我們需要配置防火牆以允許 Kubernetes 必要的流量。我們將使用 firewalld 來管理我們的防火牆。
$ sudo systemctl enable firewalld $ sudo systemctl start firewalld
接下來,我們需要開啟以下埠 -
TCP 埠 6443 - 這是 Kubernetes API 伺服器埠。
TCP 埠 2379-2380 - 這是 etcd 伺服器客戶端 API 埠。
TCP 和 UDP 埠 8472 - 這是 Flannel 的覆蓋網路埠。
TCP 和 UDP 埠 10250 - 這是 Kubelet API 埠。
$ sudo firewall-cmd --permanent --add-port=6443/tcp $ sudo firewall-cmd --permanent --add-port=2379-2380/tcp $ sudo firewall-cmd --permanent --add-port=8472/udp $ sudo firewall-cmd --permanent --add-port=10250/tcp $ sudo firewall-cmd --reload
安裝必要的元件
現在我們的環境已設定好,我們可以開始為 Kubernetes 叢集安裝必要的元件。我們需要安裝 Docker、Kubernetes 和 kubeadm。
安裝 Docker
Docker 是 Kubernetes 使用的容器執行時。要安裝它,請執行以下命令 -
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install -y docker-ce docker-ce-cli containerd.io $ sudo systemctl enable docker $ sudo systemctl start docker
安裝 Kubernetes 和 Kubeadm
我們將從官方 Kubernetes 儲存庫安裝 Kubernetes 和 kubeadm。執行以下命令 -
$ sudo vi /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck= $ sudo yum install -y kubelet kubeadm kubectl $ sudo systemctl enable kubelet $ sudo systemctl start kubelet
配置節點
現在我們已經安裝了所有必要的元件,我們可以開始配置節點了。
初始化控制平面節點
我們需要配置的第一個節點是控制平面節點。這是將承載 Kubernetes API 伺服器和 etcd 的節點。要初始化控制平面節點,請執行以下命令 -
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
此命令將需要幾分鐘才能完成。完成後,您將看到類似以下內容的訊息 -
您的 Kubernetes 控制平面已成功初始化!
要開始使用您的叢集,您需要以普通使用者身份執行以下命令 -
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
您現在可以加入任意數量的控制平面節點,在每個節點上以 root 身份執行以下命令 -
kubeadm join 10.0.0.1:6443 --token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef
請記下輸出末尾的加入命令,因為我們稍後會用到它。我們還需要執行訊息中的命令來在我們的控制平面節點上配置 kubectl。
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
將工作節點加入叢集
配置好控制平面節點後,我們可以開始將工作節點新增到叢集中。為此,我們需要在每個工作節點上執行之前儲存的加入命令。
$ sudo kubeadm join 10.0.0.1:6443 --token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef
在每個工作節點上執行加入命令後,您可以透過在控制平面節點上執行以下命令來驗證它們是否已成為叢集的一部分 -
$ kubectl get nodes
此命令應顯示叢集中的所有節點,包括控制平面節點和已加入的任何工作節點。
安裝網路外掛
最後,我們需要安裝一個網路外掛來啟用跨不同節點的 Pod 之間的通訊。我們將使用 Flannel 作為我們的網路外掛。
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安裝網路外掛後,您可以透過在一個工作節點上建立一個 Pod 並驗證它是否可以與另一個工作節點上的 Pod 通訊來驗證它是否正常工作。
雖然本指南涵蓋了在 CentOS 7 上設定 Kubernetes 叢集的基礎知識,但值得注意的是,您可以進行許多其他配置選項和自定義。例如,您可以配置 Kubernetes 以使用不同的容器執行時,或者透過新增多個主節點來設定高可用性控制平面。
此外,需要注意的是,執行 Kubernetes 叢集可能會佔用大量資源,並且隨著工作負載的增長,您可能需要考慮擴充套件基礎設施。您可能還需要考慮使用 Google Kubernetes Engine 或 Amazon Elastic Kubernetes Service 等託管 Kubernetes 服務,這些服務可以為您處理許多管理任務。
最後,值得注意的是,Kubernetes 是一個複雜的平臺,需要一些時間才能熟練掌握。如果您是 Kubernetes 新手,建議您從一些基本教程開始,然後逐步學習更復雜的配置。
結論
在本指南中,我們涵蓋了在 CentOS 7 上安裝 Kubernetes 叢集所需瞭解的所有內容。我們介紹了設定環境、安裝必要的元件以及配置節點。透過本指南,您應該能夠快速輕鬆地啟動和執行叢集。