如何在Ubuntu 18.04 LTS上安装Kubernetes

时间:2020-02-23 14:44:49  来源:igfitidea点击:

Kubernetes也称为k8,是一个免费的开源工具,用于管理Docker容器。
这是一个容器编排平台,专门用于自动执行容器化应用程序的部署,扩展和管理。
在本教程中,您将学习如何在Ubuntu 18.04 LTS上安装和配置Kubernetes。

前提条件

在开始之前,我们将有一个包含3个Ubuntu 18.04节点的测试实验室,如下所示

  • Kubernetes主节点IP地址:172.31.4.36主机名:k8-master
  • Kubernetes从站节点1 IP地址:172.31.4.170主机名:k8-slave
  • Kubernetes从站节点2 IP地址:172.31.10.30主机名:k8-slave2

此外,请确保您的系统具有以下最低要求。

  • 2个CPU
  • 4 GB内存
  • 8 GB可用硬盘空间

现在,让我们开始吧。

步骤1.设置主机名和更新主机文件

首先,您将通过SSH登录主节点并设置主机名,如下所示

$sudo hostnamectl set-hostname "k8-master"

在从属节点上,运行以下命令

$sudo hostnamectl set-hostname k8-slave
$sudo hostnamectl set-hostname k8-slave2

使用您喜欢的文本编辑器,在/etc/hosts文件中对3个节点中的每一个分别进行以下修改,即k8-master,k8-slave和k9-slave2。

172.31.4.36     k8s-master
172.31.4.170    k8-slave
172.31.10.30    k8-slave2

步骤2.在主节点和从节点上安装Docker

要在主节点上安装docker,首先,使用以下命令更新和升级系统

$sudo apt-get update && sudo apt-get upgrade

接下来,使用以下命令在主节点和从节点上安装Docker

$sudo apt-get install docker.io -y

成功安装Docker后,请使用以下命令在主节点和从节点上启动并启用Docker服务。

$sudo systemctl start docker
$sudo systemctl enable docker

要验证Docker是否正在运行,请在主节点和从节点上发出命令

$sudo systemctl status docker

要查看您刚刚安装的Docker版本,请运行

$docker --version

步骤3.在主节点和从节点上配置Kubernetes存储库

在进行下一步之前,我们需要安装一些有用的软件包。
在所有节点上运行以下命令

$sudo apt-get install apt-transport-https curl -y

接下来,通过执行以下命令来添加Kubernetes软件包存储库密钥

$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"

注意:

没有适用于Ubuntu 18.04 LTS的Kubernetes软件包存储库。
但是,我们已经使用了Xenial Kubernetes软件包存储库。

步骤4.禁用交换并安装kubeadm

我们将安装kubeadm软件包,以允许我们在集群上部署多个节点。

但是在我们这样做之前,Kubernetes官方建议禁用OS交换功能。
为此,请运行以下命令。

$sudo swapoff -a

您现在可以按照以下步骤安装kubeadm软件包。

$sudo apt-get install kubeadm -y

成功安装kubeadm软件包后,请使用以下命令验证其版本

$kubeadm version

步骤5.使用Kubeadm启动Kubernetes集群

在主节点上,使用kubeadm登录并初始化kubernetes,如图所示。

$sudo kubeadm init --pod-network-cidr=172.31.4.0/20

上面的输出确认我们已成功启动Kubernetes Master节点。
要启动集群,请执行绿色突出显示框内的命令,一个接一个

$mkdir -p $HOME/.kube
$sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$sudo chown $(id -u):$(id -g) $HOME/.kube/config

现在,我们将通过运行以下命令来验证主节点的状态。

$kubectl get nodes

此时,您将收到提示,提示主节点尚未准备就绪,因为我们尚未部署任何Pod。
在下一步中,我们将部署一个Pod网络,该网络是我们的群集节点将能够彼此通信的网络。
为此,我们将Flannel部署为我们的pod网络。
法兰绒将在群集节点之间提供覆盖网络

步骤6.将Flannel部署为Pod网络

要部署Pod网络,请在"主"节点中运行以下命令

$sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

至此,我们现在可以使用" kubectl"命令验证主节点的状态。

$sudo kubectl get nodes

如上所示,主节点状态已更改为"就绪"。
此外,验证所示的pod名称空间。

$sudo kubectl get pods --all-namespaces

上面的输出显示所有pod命名空间都处于运行状态。
最后一步是将从属节点加入群集。

步骤7.将Slave节点添加到集群

在此步骤中,我们将登录到两个从节点(k8-slave和k8-slave2)并执行以下命令,该命令在步骤5中以红色突出显示。

$kubeadm join 172.31.4.36:6443 --token w8kbni.wiyevyov0yxwwtdj --discovery-token-ca-cert-hash sha256:29adc042c538f59f0c7339ebad2126d5836de06ffe0ae22c54ce0aef2eb4cb76

现在前往主从节点,并使用" kubectl"命令检查主节点和从节点的状态

$kubectl get nodes

上面的输出确认我们已成功将两个从节点添加到集群中,并且它们的状态以及主节点已准备就绪!