如何在Ubuntu Server安裝沒有Docker的Kubernetes?
譯文【51CTO.com快譯】Kubernetes現(xiàn)棄用對Docker的支持。沒錯,您在學(xué)習(xí)這個容器編排工具上所做的所有艱苦工作都將發(fā)生變化。您使用Kubernetes的方式會不一樣。
我說的是這個容器管理工具的安裝。您當(dāng)然不能像以前那樣部署Kubernetes:將Docker安裝為運(yùn)行時環(huán)境。有鑒于此,您該怎么辦?我來演示一番。
總之,我們將在Ubuntu Server 20.04上安裝Kubernetes,沒有Docker。
您需要什么?
- 具有sudo權(quán)限的用戶
- Ubuntu Server 20.04的一個實(shí)例(將充當(dāng)控制器――您需要其他實(shí)例充當(dāng)節(jié)點(diǎn),但是我將僅在控制器上進(jìn)行演示,因?yàn)樗杏嬎銠C(jī)上的安裝都一樣)。
如何安裝containerd運(yùn)行時環(huán)境?
我們要做的第一件事是安裝containerd運(yùn)行時環(huán)境,它將代替Docker。登錄到您的Ubuntu Server實(shí)例,并確保使用以下命令更新apt:
- sudo apt-get update
這步完成后,您應(yīng)該使用以下命令運(yùn)行升級:
- sudo apt-get upgrade -y
如果內(nèi)核升級了,需要重新啟動服務(wù)器(除非您已安裝并運(yùn)行Live Patch)。
使用以下命令安裝containerd:
- sudo apt-get install containerd -y
使用以下命令配置containerd并啟動服務(wù):
- 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 http://apt.kubernetes.io/ kubernetes-xenial main"
現(xiàn)在您可以使用以下命令安裝所有必需的Kubernetes組件:
- sudo apt-get install kubeadm kubelet kubectl -y
如何解決containerd帶來的幾個問題?
這方面情況有些棘手。雖然Kubernetes開發(fā)人員會告訴您應(yīng)該很順利,事實(shí)并非如此,至少現(xiàn)在還沒有。有了Docker,許多底層工作無需操心。您遷移到containerd后,必須進(jìn)行一番手動配置更改。
第一處更改是為/etc/sysctl.conf添加一行。使用以下命令打開文件:
- sudo nano /etc/sysctl.conf
該文件打開后,在底部添加以下內(nèi)容:
- net.bridge.bridge-nf-call-iptables = 1
保存并關(guān)閉文件。
下一步,運(yùn)行以下命令:
- sudo -s
- sudo echo '1' > /proc/sys/net/ipv4/ip_forward
- exit
用以下命令重新裝入配置:
- sudo sysctl --system
您還需要用以下命令裝入幾個必要的模塊:
- sudo modprobe overlay
- sudo modprobe br_netfilter
一旦您完成了上述,應(yīng)該可以最終初始化Kubernetes了。
如何完成安裝?
您需要映射/etc/hosts中的所有節(jié)點(diǎn)。確保映射采用這種形式:
IP Address hostname
下一步是用以下命令設(shè)置控制器的主機(jī)名(確保它與您在/etc/hosts中使用的主機(jī)名相匹配):
- sudo hostnamectl set-hostname HOSTNAME
其中HOSTNAME是您想使用的主機(jī)名。
使用以下命令打開fstab文件來編輯,禁用置換:
- sudo nano /etc/fstab
在該文件中,注釋掉以/swap.img開頭的條目(即在某一行的開頭添加#字符),這一行現(xiàn)在將以#/swap.img開頭。
保存并關(guān)閉文件。
用以下命令禁用置換:
- sudo swapoff -a
用以下命令拉取必要的容器:
- sudo kubeadm config images pull
在控制器上,用以下命令初始化Kubernetes:
- sudo kubeadm init --pod-network-cidr=IPADDRESS/24
其中IPADDRESS是控制器的IP地址。
您最終將回到在節(jié)點(diǎn)上運(yùn)行的該命令,以便它們可以連接到集群??截愒撁睢?/p>
在可以將節(jié)點(diǎn)添加到集群之前,您要處理好集群上的另外幾點(diǎn)。
在集群上,用以下命令創(chuàng)建集群目錄:
- mkdir -p $HOME/.kube
用以下命令將配置文件拷貝到該目錄中:
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
用以下命令為配置文件賦予適當(dāng)?shù)臋?quán)限:
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
用以下命令將pod網(wǎng)絡(luò)(這里我們將使用weave-net)部署到集群上:
- kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
現(xiàn)在您可以在每一個節(jié)點(diǎn)上運(yùn)行join命令,以完成集群。
這個過程不如過去那么簡單。但愿在將來,Kubernetes集群部署會與過去牽涉Docker時一樣容易。在此之前,如果您選擇將這種容器編排工具托管在自己的硬件上,就要完成上述步驟。
原文標(biāo)題:How to install Kubernetes on Ubuntu Server without Docker,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】