|
|
|
|
公众号矩阵

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

Docker在Kubernetes中已被弃用,您需要知道怎样才能部署这个容器编排工具。本文作者介绍了一条可行的道路。

作者:布加迪编译来源:51CTO|2020-12-15 08:00

【51CTO.com快译】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时一样容易。在此之前,如果您选择将这种容器编排工具托管在自己的硬件上,就要完成上述步骤。

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

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 与Kubernetes渐行渐远,Docker未来在哪里?
  2. CVE-2020-8554:MiTM漏洞影响所有Kubernetes版本
  3. Kubernetes 应用程序部署工具概览
  4. Kubernetes大流行的危机:缺乏安全工具
  5. 云原生主要技术之容器技术-新纪元的分水岭?
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

1人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

30人订阅学习

数据中心和VPDN网络建设案例

数据中心和VPDN网络建设案例

漫画+案例
共20章 | 捷哥CCIE

209人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微