行业资讯

  • 首页
  • 新闻中心
  • 行业资讯

如何在Ubuntu Server安装没有Docker的Kubernetes?


2021年01月20日

Kubernetes现弃用对Docker的支持。没错,您在学习这个容器编排工具上所做的所有艰苦工作都将发生变化。您使用Kubernetes的方式会不一样。

我说的是这个容器管理工具的安装。您当然不能像以前那样部署Kubernetes:将Docker安装为运行时环境。有鉴于此,您该怎么办?我来演示一番。

总之,我们将在Ubuntu Server 20.04上安装Kubernetes,没有Docker。

您需要什么?

  • 具有sudo权限的用户
  • Ubuntu Server 20.04的一个实例(将充当控制器――您需要其他实例充当节点,但是我将仅在控制器上进行演示,因为所有计算机上的安装都一样)。

如何安装containerd运行时环境?

我们要做的第一件事是安装containerd运行时环境,它将代替Docker。登录到您的Ubuntu Server实例,并确保使用以下命令更新apt:


 
  1. sudo apt-get update 

这步完成后,您应该使用以下命令运行升级:


 
  1. sudo apt-get upgrade -y 

如果内核升级了,需要重新启动服务器(除非您已安装并运行Live Patch)。

使用以下命令安装containerd:


 
  1. sudo apt-get install containerd -y 

使用以下命令配置containerd并启动服务:


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

如何安装Kubernetes?

接下来我们将安装Kubernetes。首先您需要使用以下命令添加存储库的GPG密钥:


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

使用以下命令添加Kubernetes存储库:


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

现在您可以使用以下命令安装所有必需的Kubernetes组件:


 
  1. sudo apt-get install kubeadm kubelet kubectl -y 

如何解决containerd带来的几个问题?

这方面情况有些棘手。虽然Kubernetes开发人员会告诉您应该很顺利,事实并非如此,至少现在还没有。有了Docker,许多底层工作无需操心。您迁移到containerd后,必须进行一番手动配置更改。

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


 
  1. sudo nano /etc/sysctl.conf 

该文件打开后,在底部添加以下内容:


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

保存并关闭文件。

下一步,运行以下命令:


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

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


 
  1. sudo sysctl --system 

您还需要用以下命令装入几个必要的模块:


 
  1. sudo modprobe overlay 
  2. sudo modprobe br_netfilter 

一旦您完成了上述,应该可以最终初始化Kubernetes了。

如何完成安装?

您需要映射/etc/hosts中的所有节点。确保映射采用这种形式:

IP Address hostname

下一步是用以下命令设置控制器的主机名(确保它与您在/etc/hosts中使用的主机名相匹配):


 
  1. sudo hostnamectl set-hostname HOSTNAME 

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

使用以下命令打开fstab文件来编辑,禁用置换:


 
  1. sudo nano /etc/fstab 

在该文件中,注释掉以/swap.img开头的条目(即在某一行的开头添加#字符),这一行现在将以#/swap.img开头。

保存并关闭文件。

用以下命令禁用置换:


 
  1. sudo swapoff -a 

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


 
  1. sudo kubeadm config images pull 

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


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

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

您最终将回到在节点上运行的该命令,以便它们可以连接到集群。拷贝该命令。

在可以将节点添加到集群之前,您要处理好集群上的另外几点。

在集群上,用以下命令创建集群目录:


 
  1. mkdir -p $HOME/.kube 

用以下命令将配置文件拷贝到该目录中:


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

用以下命令为配置文件赋予适当的权限:


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

用以下命令将pod网络(这里我们将使用weave-net)部署到集群上:


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

现在您可以在每一个节点上运行join命令,以完成集群。

这个过程不如过去那么简单。但愿在将来,Kubernetes集群部署会与过去牵涉Docker时一样容易。在此之前,如果您选择将这种容器编排工具托管在自己的硬件上,就要完成上述步骤。


客服