【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】