在Ubuntu Server安裝沒有Docker的Kubernetes

在Ubuntu Server安裝沒有Docker的Kubernetes
【51CTO.com快譯】Kubernetes現棄用對Docker的支持。沒錯,您在學習這個容器編排工具上所做的所有艱苦工作都將發生變化。您使用Kubernetes的方式會不一樣。

我説的是這個容器管理工具的安裝。您當然不能像以前那樣部署Kubernetes:將Docker安裝為運行時環境。有鑑於此,您該怎麼辦?我來演示一番。

總之,我們將在Ubuntu Server 20.04上安裝Kubernetes,沒有Docker。

您需要什麼?

具有sudo權限的用户

Ubuntu Server 20.04的一個實例(將充當控制器――您需要其他實例充當節點,但是我將僅在控制器上進行演示,因為所有計算機上的安裝都一樣)。

如何安裝containerd運行時環境?

我們要做的第一件事是安裝containerd運行時環境,它將代替Docker。登錄到您的Ubuntu Server實例,並確保使用以下命令更新apt:

sudo apt-get update

這步完成後,您應該使用以下命令運行升級:

sudo apt-get upgrade -y

如果內核升級了,需要重新啓動服務器(除非您已安裝並運行Live Patch)。

使用以下命令安裝containerd:

sudo apt-get install containerd -y

使用以下命令配置containerd並啓動服務:

sudo mkdir -p /etc/containerd sudo su - containerd config default /etc/containerd/config.toml

如何安裝Kubernetes?

接下來我們將安裝Kubernetes。首先您需要使用以下命令添加存儲庫的GPG密鑰:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

使用以下命令添加Kubernetes存儲庫:

sudo apt-add-repository "deb https://apt.kubernetes.io/ kubernetes-xenial main"

現在您可以使用以下命令安裝所有必需的Kubernetes組件:

sudo apt-get install kubeadm kubelet kubectl -y

如何解決containerd帶來的幾個問題?

這方面情況有些棘手。雖然Kubernetes開發人員會告訴您應該很順利,事實並非如此,至少現在還沒有。有了Docker,許多底層工作無需操心。您遷移到containerd後,必須進行一番手動配置更改。

第一處更改是為/etc/sysctl.conf添加一行。使用以下命令打開文件:

sudo nano /etc/sysctl.conf

該文件打開後,在底部添加以下內容:

net.bridge.bridge-nf-call-iptables = 1

保存並關閉文件。

下一步,運行以下命令:

sudo -s sudo echo '1' > /proc/sys/net/ipv4/ip_forward exit

用以下命令重新裝入配置:

sudo sysctl --system

您還需要用以下命令裝入幾個必要的模塊:

sudo modprobe overlay sudo modprobe br_netfilter

一旦您完成了上述,應該可以最終初始化Kubernetes了。

如何完成安裝?

您需要映射/etc/hosts中的所有節點。確保映射採用這種形式:

IP Address hostname

下一步是用以下命令設置控制器的主機名(確保它與您在/etc/hosts中使用的主機名相匹配):

sudo hostnamectl set-hostname HOSTNAME

其中HOSTNAME是您想使用的主機名。

使用以下命令打開fstab文件來編輯,禁用置換:

sudo nano /etc/fstab

在該文件中,註釋掉以/swap.img開頭的條目(即在某一行的開頭添加#字符),這一行現在將以#/swap.img開頭。

保存並關閉文件。

用以下命令禁用置換:

sudo swapoff -a

用以下命令拉取必要的容器:

sudo kubeadm config images pull

在控制器上,用以下命令初始化Kubernetes:

sudo kubeadm init --pod-network-cidr=IPADDRESS/24

其中IPADDRESS是控制器的IP地址。

您最終將回到在節點上運行的該命令,以便它們可以連接到集羣。拷貝該命令。

在可以將節點添加到集羣之前,您要處理好集羣上的另外幾點。

在集羣上,用以下命令創建集羣目錄:

mkdir -p $HOME/.kube

用以下命令將配置文件拷貝到該目錄中:

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

用以下命令為配置文件賦予適當的權限:

sudo chown $(id -u):$(id -g) $HOME/.kube/config

用以下命令將pod網絡(這裏我們將使用weave-net)部署到集羣上:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

現在您可以在每一個節點上運行join命令,以完成集羣。

這個過程不如過去那麼簡單。但願在將來,Kubernetes集羣部署會與過去牽涉Docker時一樣容易。在此之前,如果您選擇將這種容器編排工具託管在自己的硬件上,就要完成上述步驟。

原文標題:How to install Kubernetes on Ubuntu Server without Docker,作者:Jack Wallen

【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO.com】

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 2487 字。

轉載請註明: 在Ubuntu Server安裝沒有Docker的Kubernetes - 楠木軒