【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 http://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】