服务器搭建 Kubernetes 集群入门教程

概述

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,允许开发者自动化应用程序的部署、扩展和管理。它极大地简化了容器化应用的管理,使得DevOps和运维团队能够更高效地工作。本文将介绍如何使用服务器搭建一个简单的Kubernetes集群,并帮助初学者入门。

准备工作

在开始搭建Kubernetes集群之前,需要确保有以下准备工作完成:

  1. 服务器环境:准备3台或多台服务器,建议使用相同的配置以避免兼容性问题。操作系统推荐使用Ubuntu 18.04或更高版本。
  2. 网络配置:确保所有服务器之间可以相互通信,最好在同一个局域网内,并配置静态IP地址。
  3. 必备工具:确保每台服务器上安装了必要的工具,如Docker、curl、vim等。
  4. 账号权限:确保操作员有足够的权限安装和配置软件。

安装 Docker

Docker是Kubernetes的运行基础,因此需要在每台服务器上安装Docker。

sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

安装完成后,可以通过以下命令验证Docker是否安装成功:

docker --version

安装 kubeadm

kubeadm是Kubernetes的部署工具,可以用来快速搭建一个集群。

sudo apt-get update
sudo apt-get install -y curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://packages.cloud.google.com/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubeadm

安装完成后,初始化kubeadm:

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

初始化过程中会输出一些指令,这些指令需要在其他加入集群的节点上使用。

加入集群节点

假设你已经有一个主节点(Master),接下来需要将其他服务器设置为Worker节点。

首先,在Master节点上运行以下命令获取加入集群的指令:

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

然后,在其他服务器上运行以下命令加入集群:

sudo apt-get update
sudo apt-get install -y curl
curl -LO "https://get.k3s.io"
chmod +x k3s
sudo ./k3s join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

其中,<master-ip><master-port>是Master节点的IP地址和端口,<token><hash>可以通过sudo kubeadm token create --print-join-command在Master节点上获取。

验证集群

在所有节点加入集群后,可以通过以下命令验证集群状态:

kubectl get nodes

如果输出中所有节点的状态都为Ready,则集群搭建成功。

部署一个 Pod

接下来,部署一个简单的Nginx Pod来验证集群的功能。

首先,创建一个Nginx部署文件nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

然后,应用部署文件:

kubectl apply -f nginx-deployment.yaml

接着,创建一个服务以暴露Nginx:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

应用服务文件:

kubectl apply -f nginx-service.yaml

最后,可以通过随机分配的NodePort访问Nginx:

curl <NodeIP>:<NodePort>

如果看到Nginx的欢迎页面,则说明部署成功。

总结

通过以上步骤,你已经成功搭建了一个简单的Kubernetes集群,并部署了一个Nginx应用。这只是Kubernetes的入门级操作,实际生产环境中还需要考虑更多的配置和管理,如网络配置、存储配置、高可用性等。

希望本文能帮助你快速入门Kubernetes,并在未来的学习和工作中有所帮助。