Ubuntu/Debian公网环境下部署K8s集群

Kubernetes(k8s)是一种开源容器编排系统,它可以轻松管理和部署容器化应用程序。

此教程假定已经具备以下技能:

  • 熟悉 Linux 系统管理和命令行界面。
  • 了解容器和 Docker。
  • 熟悉云服务器和网络配置。

现在,开始!!!

一、安装 Docker

首先,需要在所有节点上安装 Docker。Docker 是一种开源容器平台,它可以帮助您轻松地创建、部署和运行容器化应用程序。

要在 Ubuntu 上安装 Docker,请运行以下命令:

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

二、安装 Kubernetes 工具

要在 Ubuntu 上安装 Kubernetes 工具,请运行以下命令:

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

三、初始化 Kubernetes Master 节点

在此步骤中,将初始化 Kubernetes Master 节点。

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

此命令将初始化 Kubernetes 集群,并生成一个命令,需要在其他节点上运行它。请将此命令保存到文本文件中,以便稍后使用。

四、加入 Kubernetes Node 节点

运行 kubeadm init 命令后,它会输出一个命令,您需要在其他节点上运行它。例如:

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

将此命令复制到其他节点上,并用在 Master 节点上生成的实际命令替换其中的 IP 地址和令牌。然后运行此命令。

五、安装网络插件

在此步骤中,将安装 Kubernetes 网络插件,以确保容器可以在集群内通信。

要安装网络插件,可以选择使用 Calico、Flannel 或 Weave Net。在本教程中,下面使用 Calico。

kubectl apply -f https://docs.projectcalico.org/v3.16/manifests/calico.yaml

接下来将下载并安装 Calico 网络插件。

六、验证集群状态

要验证 Kubernetes 集群状态,在 Master 节点上运行以下命令:

kubectl get nodes

此命令应返回所有节点的名称和状态。如果所有节点都处于“Ready”状态,则集群已成功部署。

七、部署应用程序

现在,可以在 Kubernetes 集群上部署应用程序。首先,需要创建一个 Deployment,它将在集群中创建一个 Pod,其中包含应用程序容器。

以下是一个示例 Deployment YAML 文件:

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

请将此 YAML 文件保存到名为“my-app-deployment.yaml”的文件中,并使用以下命令将其部署到 Kubernetes 集群中:

kubectl apply -f my-app-deployment.yaml

此命令将在 Kubernetes 集群中创建一个名为“my-app”的 Deployment,并在其中运行 3 个 Pod。

要验证应用程序正在运行,请运行以下命令:

kubectl get pods

此命令应返回正在运行的 Pod 的名称和状态。如果您的应用程序正在运行,则应显示 3 个处于“Running”状态的 Pod。

八、创建 Service

现在,需要创建一个 Kubernetes Service,以便应用程序可以在集群外部访问。

以下是一个示例 Service YAML 文件:

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
  - name: http
    port: 80
    targetPort: 80
  type: LoadBalancer

请将此 YAML 文件保存到名为“my-app-service.yaml”的文件中,并使用以下命令将其部署到 Kubernetes 集群中:

kubectl apply -f my-app-service.yaml

此命令将创建一个名为“my-app-service”的 Kubernetes Service,它将路由流量到名为“my-app”的 Deployment 中运行的 Pod。

九、访问应用程序

现在,可以使用公共 IP 地址或域名访问您的应用程序。要查找 Kubernetes Service 的公共 IP 地址,请运行以下命令:

kubectl get services

此命令将返回正在运行的 Service 的名称、类型、端口和公共 IP 地址。

现在,可以使用公共 IP 地址或域名访问您的应用程序。如果使用的是 LoadBalancer 类型的 Service,则可以在 Web 浏览器中输入该 IP 地址(或域名)来访问应用程序。如果应用程序正常运行,则应该看到应用程序的欢迎页面。

十、清理

如果已经完成了对 Kubernetes 集群的测试并希望清理集群,可以运行以下命令来删除 Kubernetes 资源:

kubectl delete deployment my-app
kubectl delete service my-app-service
kubeadm reset

此命令将删除名为“my-app”的 Deployment 和名为“my-app-service”的 Service,并将重置 Master 节点上的 Kubernetes 环境。

注意:这些命令将删除所有在集群中运行的 Pod、Deployment 和 Service。请谨慎操作,以免意外删除生产应用程序。

Ubuntu/Debian公网环境下部署K8s集群》有一个想法

  1. korarian

    博主,请问 两台公网固定IP服务器 一台动态公网IP 这种需要怎么配置calico?

    • -找好久 没找到解决办法。
    回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注