如何在 CentOS 7 上安装 Kubernetes Docker 集群使用国内镜像

Kubernetes 是一个开源平台,用于管理容器化应用程序。它允许您在集群环境中管理、扩展和自动部署容器化应用程序。使用 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
  • 根权限

我们要做什么?

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

第 1 步 - Kubernetes 安装

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

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

- 配置主机

使用vi编辑所有服务器上的hosts文件 。

vi /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 pods可以相互通信。

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

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

- 禁用交换

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

swapoff -a

禁用交换

然后编辑“/etc/fstab”文件。

vi /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

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

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

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

yum install -y kubelet kubeadm kubectl

安装 Kubernetes

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

# shutdown -r 0

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

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

第 2 步 - Kubernetes 集群初始化

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

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

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

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

# kubeadm init \
  --apiserver-advertise-address=10.0.15.10 \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=10.244.0.0/16

Kubernetes 集群初始化

如果出现如下问题:
[kubelet-check] It seems like the kubelet isn’t running or healthy.
[kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz’ failed with error: Get http://localhost:10248/healthz: dial tcp 127.0.0.1:10248: connect: connection refused.

这是cgroup驱动问题。默认情况下Kubernetes cgroup驱动程序设置为system,但docker设置为systemd。我们需要更改Docker cgroup驱动,通过创建配置文件/etc/docker/daemon.json并添加以下行:

{"exec-opts": ["native.cgroupdriver=systemd"]}

为使配置生效,你必须重启docker和kubelet。

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

如果执行过程意外中断,可以重置后再次初始化

kubeadm reset

询问是否时输入:y

笔记:

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

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

Kubernetes 加入

flannel 网络已经部署到 Kubernetes 集群。

等待一分钟,然后使用以下命令检查 kubernetes 节点和 pod。

kubectl get nodes
kubectl get pods --all-namespaces

您将获得“k8s-master”节点作为“master”集群运行且状态为“ready”,您将获得集群所需的所有 pod,包括网络 pod 的“kube-flannel-ds”配置。

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

检查 Kubernetes 节点

Kubernetes集群master初始化和配置已经完成。

步骤 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

将 node01 和 node02 添加到集群

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

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

连接 Docker 节点

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

kubectl get nodes
kubectl get pods --all-namespaces

现在您将获得 node01 和 node02 已添加到状态为“就绪”的集群。

kubctl 命令

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

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

在这一步中,我们将通过将 Nginx pod 部署到 kubernetes 集群来进行测试。Pod 是一组在 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

创建第一个 Pod

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

kubectl get pods
kubectl get svc

获取 Pod 列表

现在您将获得 nginx pod 现在在集群 IP 地址“10.160.60.38”端口 80 下运行,节点主 IP 地址“10.0.15.x”在端口“30691”下运行。

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

curl node01:30691

用 curl 测试

curl node02:30691

使用 curl 测试节点 2

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

现在从网络浏览器访问。

http://10.0.15.10:30691/

您将获得 Nginx 默认页面。

节点 1 上的页面

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

节点 2 上的页面

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

参考

Guess you like

Origin blog.csdn.net/allway2/article/details/121720981