debian

如何在Debian上部署K8S应用

小樊
59
2025-08-08 02:23:31
栏目: 智能运维

在Debian上部署K8S应用需先搭建集群,再通过配置文件部署应用,以下是关键步骤:

一、搭建Kubernetes集群

  1. 系统准备

    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 关闭Swap:sudo swapoff -a 并编辑 /etc/fstab 注释掉Swap行。
    • 配置内核参数:添加 net.bridge.bridge-nf-call-iptables=1 等参数到 /etc/sysctl.d/99-kubernetes-k8s.conf,执行 sudo sysctl --system 生效。
  2. 安装容器运行时(containerd)

    • 添加仓库并安装:
      curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -  
      echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list  
      sudo apt update  
      sudo apt install -y containerd  
      sudo mkdir -p /etc/containerd  
      sudo tee /etc/containerd/config.toml <<EOF  
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  
      path = "/usr/bin/runc"  
      EOF  
      sudo systemctl enable --now containerd  
      
  3. 安装Kubernetes组件

    • 添加仓库并安装 kubeletkubeadmkubectl
      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 update  
      sudo apt install -y kubelet kubeadm kubectl  
      sudo apt-mark hold kubelet kubeadm kubectl  
      
  4. 初始化主节点

    • 执行初始化命令(指定Pod网络CIDR,如 10.244.0.0/16):
      sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 配置 kubectl
      mkdir -p $HOME/.kube  
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
      sudo chown $(id -u):$(id -g) $HOME/.kube/config  
      
  5. 安装网络插件(如Flannel)
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

  6. 加入工作节点

    • 在工作节点上执行主节点生成的 kubeadm join 命令(需替换为实际IP和Token)。

二、部署K8S应用

  1. 创建Docker镜像

    • 编写 Dockerfile 打包应用,例如:
      FROM nginx:latest  
      COPY ./app /usr/share/nginx/html  
      EXPOSE 80  
      CMD ["nginx", "-g", "daemon off;"]  
      
    • 构建并推送镜像到仓库:
      docker build -t your-nginx-app .
      docker tag your-nginx-app your-registry/your-nginx-app
      docker push your-registry/your-nginx-app
  2. 定义Kubernetes资源

    • 创建 deployment.yaml
      apiVersion: apps/v1  
      kind: Deployment  
      metadata:  
        name: nginx-deployment  
      spec:  
        replicas: 3  
        selector:  
          matchLabels:  
            app: nginx  
        template:  
          metadata:  
            labels:  
              app: nginx  
          spec:  
            containers:  
            - name: nginx  
              image: your-registry/your-nginx-app  
              ports:  
              - containerPort: 80  
      
  3. 部署应用

    • 应用配置文件:kubectl apply -f deployment.yaml
    • 创建Service暴露服务(如NodePort):
      apiVersion: v1  
      kind: Service  
      metadata:  
        name: nginx-service  
      spec:  
        type: NodePort  
        selector:  
          app: nginx  
        ports:  
        - protocol: TCP  
          port: 80  
          targetPort: 80  
      
      kubectl apply -f service.yaml
  4. 验证部署

    • 查看Pod状态:kubectl get pods
    • 查看Service端口:kubectl get svc
    • 通过节点IP+端口访问应用(如 curl http://节点IP:端口)。

注意事项

0
看了该问题的人还看了