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

在本教程中,我将逐步向您展示如何在CentOS 7上安装和配置Kubernetes和Docker。Kubernetes是一个开放源代码平台...

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

Kubernetes是一个管理由Google开发的容器化应用程序的开源平台。 它允许您在集群环境中管理,扩展和自动部署容器化应用程序。 借助Kubernetes,我们可以在多台主机上编排我们的容器,随时随地利用所有资源扩展容器化的应用程序,并拥有集中的容器管理环境。

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

先决条件

  • 3个CentOS 7服务器
    • 10.0.15.10 k8s-master
    • 10.0.15.21 node01
    • 10.0.15.22 node02
  • 根特权

我们将要做什么?

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

第1步 - Kubernetes安装

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

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

- 配置主机

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

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窗格可以相互通信。

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

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

- 禁用SWAP

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

swapoff -a

禁用交换

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

vim /etc/fstab

如下所示评论交换行UUID。

编辑/ etc / fstab

- 安装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安装。

安装Docker

- 安装Kubernetes

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

cat <<EOF > /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

安装Kubernetes

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

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群集。

Konfigure Kubernetes集群

第2步 - Kubernetes群集初始化

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

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

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

Kubernetes群集初始化

注意:

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

--pod-network-cidr =指定pod网络的IP地址范围。 我们正在使用'绒布'虚拟网络。 如果您想使用另一个pod网络,例如weave-net或calico,请更改范围IP地址。

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

Kubernetes初始化完成

注意:

将' 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命令将法兰绒网络部署到kubernetes集群。

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

Kubernetes加入

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

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

kubectl get nodes
kubectl get pods --all-namespaces

你将得到'k8s-master'节点作为状态为'ready'的'master'群集运行,你将得到群集所需的所有pod,包括网络pod的'kube-flannel-ds'组态。

确保所有kube-system豆荚状态都是“正在运行”。

检查Kubernetes节点

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

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

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

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

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

将node01和node02添加到群集

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

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

连接Docker节点

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

kubectl get nodes
kubectl get pods --all-namespaces

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

kubctl命令

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

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

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

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

kubectl create deployment nginx --image=nginx

要查看'nginx'部署规范的详细信息,请运行以下命令。

kubectl describe deployment nginx

你将得到nginx pod部署规范。

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

运行下面的kubectl命令。

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

创建第一个吊舱

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

kubectl get pods
kubectl get svc

获取豆荚列表

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

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

curl node01:30691

Curl测试

curl node02:30691

测试节点2Curl

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

现在从网络浏览器访问。

http://10.0.15.10:30691/

你会得到Nginx的默认页面。

在节点1上的页面

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

在节点2上的页面

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

参考