如何在CentOS 7上安装Kubernetes Docker群集

 

如何在CentOS 7上安装Kubernetes Docker群集

 

Kubernetes是一个开源平台,用于管理由Google开发的容器化应用程序。它允许您在集群环境中管理,扩展和自动部署容器化应用程序。使用Kubernetes,我们可以跨多个主机协调我们的容器,使用所有资源即时扩展容器化应用程序,并拥有集中的容器管理环境。

在本教程中,我将逐步向您展示如何在CentOS 7上安装和配置Kubernetes。我们将使用1台服务器'k8s-master'作为Kubernetes Host Master,2台服务器作为Kubernetes节点,'node01'和'node02'。

 

先决条件

  • 3台CentOS 7服务器
    • 10.0.15.10 k8s-master
    • 10.0.15.21 node01
    • 10.0.15.22 node02
  • Root权限

 

我们将要做什么?

  1. Kubernetes安装
  2. Kubernetes集群初始化
  3. 将node01和node02添加到群集
  4. 测试 - 创建第一个Pod

 

第1步 - Kubernetes安装

在第一步中,我们将为Kubernetes安装准备这3台服务器,因此在主服务器和节点服务器上运行所有命令。

我们将通过更改服务器上的现有配置以及安装一些软件包(包括docker-ce和kubernetes本身)来为Kubernetes安装准备所有服务器。

- 配置主机

使用vim编辑器在所有服务器上编辑hosts文件  。

vim /etc/hosts

粘贴下面的主机列表。

10.0.15.10 k8s-master 
10.0.15.21 node01 
10.0.15.22 node02

保存并退出。

- 禁用SELinux

在本教程中,我们不会介绍Docker的SELinux配置,因此我们将禁用它。

运行以下命令以禁用SELinux。

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

- 启用br_netfilter内核模块

kubernetes安装需要br_netfilter模块。启用此内核模块,以便iptables处理遍历网桥的数据包​​以进行过滤和端口转发,并且群集中的kubernetes pod可以相互通信。

运行以下命令以启用br_netfilter内核模块。

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

- 禁用SWAP

通过运行以下命令禁用用于kubernetes安装的SWAP。

swapoff -a

如何在CentOS 7上安装Kubernetes Docker群集_第1张图片

然后编辑'/ etc / fstab'文件。

vim /etc/fstab

注释交换行UUID如下。

如何在CentOS 7上安装Kubernetes Docker群集_第2张图片

- 安装Docker CE

从docker存储库安装最新版本的Docker-ce。

安装docker-ce的软件包依赖项。

yum install -y yum-utils device-mapper-persistent-data lvm2

将docker存储库添加到系统并使用yum命令安装docker-ce。

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

等待docker-ce安装。

如何在CentOS 7上安装Kubernetes Docker群集_第3张图片

- 安装Kubernetes

通过运行以下命令将kubernetes存储库添加到centos 7系统。

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

现在使用下面的yum命令安装kubernetes包kubeadm,kubelet和kubectl。

yum install -y kubelet kubeadm kubectl

如何在CentOS 7上安装Kubernetes Docker群集_第4张图片

安装完成后,重新启动所有这些服务器。

sudo reboot

再次登录到服务器并启动服务,docker和kubelet。

systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet

- 更改cgroup-driver

我们需要确保docker-ce和kubernetes使用相同的'cgroup'。

使用docker info命令检查docker cgroup。

docker info | grep -i cgroup

你看到docker正在使用' cgroupfs '作为cgroup-driver。

现在运行以下命令将kuberetes cgroup-driver更改为'cgroupfs'。

sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

重新加载systemd系统并重新启动kubelet服务。

systemctl daemon-reload
systemctl restart kubelet

现在我们已准备好配置Kubernetes集群。

如何在CentOS 7上安装Kubernetes Docker群集_第5张图片

 

第2步 - Kubernetes群集初始化

在此步骤中,我们将初始化kubernetes主集群配置。

将shell移动到主服务器'k8s-master'并运行以下命令来设置kubernetes master。

kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16

如何在CentOS 7上安装Kubernetes Docker群集_第6张图片

注意:

--apiserver-advertise-address =确定Kubernetes应该在哪个IP地址上公布其API服务器。

--pod-network-cidr =指定pod网络的IP地址范围。我们正在使用'法兰绒'虚拟网络。如果要使用其他pod网络(如weave-net或calico),请更改范围IP地址。

Kubernetes初始化完成后,您将得到如下结果。

如何在CentOS 7上安装Kubernetes Docker群集_第7张图片

 

注意:

将' kubeadm join ... ... ... '命令复制到文本编辑器。该命令将用于向kubernetes集群注册新节点。

现在为了使用Kubernetes,我们需要在结果上运行一些命令。

创建新的“.kube”配置目录并复制配置“admin.conf”。

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

接下来,使用kubectl命令将flannel网络部署到kubernetes集群。

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

如何在CentOS 7上安装Kubernetes Docker群集_第8张图片

法兰绒网络已部署到Kubernetes集群。

等一下,然后使用下面的命令检查kubernetes节点和pod。

kubectl get nodes
kubectl get pods --all-namespaces

您将获得'k8s-master'节点作为“主”群集运行,状态为“就绪”,您将获得群集所需的所有pod,包括用于网络pod的'kube-flannel-ds'组态。

确保所有kube-system pods状态为“正在运行”。

如何在CentOS 7上安装Kubernetes Docker群集_第9张图片

Kubernetes集群主机初始化和配置已完成。

 

步骤3 - 将node01和node02添加到群集

在此步骤中,我们将添加node01和node02以加入'k8s'集群。

连接到node01服务器并在我们复制到顶部时运行kubeadm join命令。

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

如何在CentOS 7上安装Kubernetes Docker群集_第10张图片

连接到node02服务器并运行kubeadm join命令,因为我们复制在顶部。

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

如何在CentOS 7上安装Kubernetes Docker群集_第11张图片

等待几分钟后返回'k8s-master'主集群服务器,使用以下命令检查节点和pod。

kubectl get nodes
kubectl get pods --all-namespaces

现在,您将获得node01,并且node02已添加到状态为“ready”的群集中。

如何在CentOS 7上安装Kubernetes Docker群集_第12张图片

node01和node02已添加到kubernetes集群中。

 

第4步 - 测试创建第一个Pod

在此步骤中,我们将通过将Nginx pod部署到kubernetes集群来进行测试。pod是一组包含共享存储和网络的一个或多个容器,在Kubernetes下运行。Pod包含一个或多个容器,例如Docker容器。

登录到'k8s-master'服务器并使用kubectl命令创建名为'nginx'的新部署。

kubectl create deployment nginx --image=nginx

要查看“nginx”部署sepcification的详细信息,请运行以下命令。

kubectl describe deployment nginx

您将获得nginx pod部署规范。

接下来,我们将展示可通过互联网访问的nginx pod。我们需要为此创建新的服务NodePort。

运行下面的kubectl命令。

kubectl create service nodeport nginx --tcp=80:80

如何在CentOS 7上安装Kubernetes Docker群集_第13张图片

确保没有错误。现在使用下面的kubectl命令检查nginx服务nodeport和IP。

kubectl get pods
kubectl get svc

如何在CentOS 7上安装Kubernetes Docker群集_第14张图片

现在,您将获得nginx pod现在在群集IP地址'10 .160.60.38'端口80下运行,以及端口'30691'上的节点主IP地址'10 .0.15.x'。

从'k8s-master'服务器运行 下面的curl命令。

curl node01:30691

如何在CentOS 7上安装Kubernetes Docker群集_第15张图片

curl node02:30691

如何在CentOS 7上安装Kubernetes Docker群集_第16张图片

Nginx Pod现已部署在Kubernetes集群下,可通过互联网访问。

现在从Web浏览器访问。

http://10.0.15.10:30691/

您将获得Nginx默认页面。

如何在CentOS 7上安装Kubernetes Docker群集_第17张图片

在node02服务器上 - http://10.0.15.11:30691/

如何在CentOS 7上安装Kubernetes Docker群集_第18张图片

CentOS 7上的Kubernetes集群安装和配置已成功完成。

 

参考

  • https://kubernetes.io/docs/

关于穆罕默德阿鲁尔

Muhammad Arul是一名自由系统管理员和技术作家。他在Linux Env​​ironments工作超过5年,是一名开源爱好者,并且在Linux安装和故障排除方面积极主动。主要使用RedHat / CentOS Linux和Ubuntu / Debian,Nginx和Apache Web服务器,Proxmox,Zimbra管理和网站优化。目前正在学习OpenStack和容器技术。

 

转载来源:https://www.howtoforge.com/tutorial/centos-kubernetes-docker-cluster/

你可能感兴趣的:(Unix&Unix-Like)