centos7系统部署k8s集群详细介绍

  • Post category:Linux

本文将以 Markdown 格式展示 centos7 系统部署 k8s 集群详细介绍,以便更好地进行阅读。

系统环境

在进行 k8s 部署之前,我们需要准备好以下环境:

  • 三台虚拟机,系统为 CentOS 7.x。
  • 所有虚拟机 IP 需要互通,通常使用同一个网段,如 192.168.0.xx。
  • 手机或电脑端,安装好 kubectl 命令行工具。

安装 Docker

Docker 是一个非常重要的组件,它用于构建和管理容器,而 k8s 实际上就是一个容器编排系统。因此,在进行 k8s 部署之前,我们需要先安装好 Docker。

推荐使用阿里云的 Docker 源加速,具体操作如下:

  1. 创建文件 /etc/docker/daemon.json,输入以下内容:
{
  "registry-mirrors": ["https://7gsphjav.mirror.aliyuncs.com"]
}
  1. 执行命令:
sudo systemctl daemon-reload
sudo systemctl restart docker

安装 kubeadm

kubeadm 是用于 k8s 集群的初始化和部署的工具,我们可以使用它来快速部署 k8s 集群。

首先,我们需要将 k8s 的 YUM 源添加到系统中,执行以下命令:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

然后,我们就可以安装 kubeadm 工具了:

yum install -y kubelet kubeadm kubectl

部署 k8s 集群

在所有节点上都安装好 Docker 和 kubeadm 之后,我们就可以开始部署 k8s 集群了。在这个部署过程中,我们需要以一台机器为“master”节点,其他两台机器为“worker”节点。

初始化 master 节点

接下来,我们需要在 master 节点上执行以下命令:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

其中,--pod-network-cidr 选项用于指定 k8s 集群中容器所使用的 IP 地址段。我们这里选择的是 10.244.0.0/16,因为它是 Flannel 默认的 IP 地址段。

当命令执行完成后,会输出一段类似于以下的日志:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube

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

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join <master-ip-address>:<master-port> --token <token> \
    --discovery-token-ca-cert-hash sha256:<hash>

这段日志包含了 k8s 的一些基础操作,我们需要将其中的命令进行复制,并在下一步中使用。

部署 Flannel 网络插件

Flannel 是一个 k8s 中常用的网络插件,它使用 VXLAN 技术来构建 k8s 集群内的通信网络。我们需要在 master 节点上执行以下命令:

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

在部署完成之后,我们可以运行以下命令来查看 k8s 集群的状态:

kubectl get nodes

如果 k8s 集群的状态显示为“Ready”,则表示我们已经成功地部署了一个 k8s 集群。

加入 worker 节点

接下来,我们需要将 worker 节点加入到 k8s 集群中。

在每台 worker 节点上执行操作时,需要将 master 节点输出的 kubeadm join 命令进行复制,并将命令中的 <master-ip-address> 替换为 master 节点的 IP 地址。例如:

sudo kubeadm join 192.168.0.2:6443 --token jvbylt.4avydvgo9our8zxd \
    --discovery-token-ca-cert-hash sha256:3a366b7657559e32cd20f7a7b92138e2b0926b307ee937423ca1301962cf8aa3

示例1:部署 Nginx 应用

在 k8s 集群中部署一个 Nginx 应用,我们需要创建一个配置文件,如下所示,并执行命令 kubectl apply -f nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80

示例2:部署 MySQL 数据库

在 k8s 集群中部署一个 MySQL 数据库,我们需要创建一个配置文件,如下所示,并执行命令 kubectl apply -f mysql.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  containers:
    - name: mysql
      image: mysql:latest
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: rootpassword
      ports:
        - containerPort: 3306
          name: mysql

在以上两个示例中,我们使用 Docker Hub 上的镜像构建了一个 Nginx 应用和一个 MySQL 数据库,并使用了 k8s 的 yaml 文件来进行部署。在实际的应用中,我们可以根据需要来编写不同的 yaml 配置文件,并使用 kubectl apply 命令来进行部署和管理。