debian

如何在Debian上部署和管理Kubernetes应用

小樊
44
2025-10-08 14:38:40
栏目: 智能运维

一、准备工作

  1. 系统要求:Debian 10及以上版本(推荐Debian 12),至少2核CPU、2GB RAM、20GB硬盘空间;所有节点需联网且时间同步(建议安装ntp服务)。
  2. 系统设置
    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 关闭Swap(Kubernetes要求):sudo swapoff -a,并永久禁用(编辑/etc/fstab,注释或删除Swap行);
    • 配置主机名与hosts文件(可选但建议):主节点设为k8s-master,工作节点设为k8s-node1k8s-node2等,编辑/etc/hosts添加对应IP和主机名映射。

二、安装Kubernetes核心组件

  1. 添加Kubernetes APT仓库
    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
    
  2. 安装kubelet、kubeadm、kubectl
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,避免自动升级
    

三、初始化主节点

  1. 初始化集群(以Calico网络插件所需的CIDR为例):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    初始化完成后,会输出kubeadm join命令(包含token和CA证书哈希),需保存备用。
  2. 配置kubectl
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

四、部署网络插件 Kubernetes需要网络插件实现Pod间通信,常用Calico(适合生产)或Flannel(简单易用):

五、加入工作节点 在工作节点上执行主节点初始化时输出的kubeadm join命令,例如:

sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:123456789abcdef

加入后,主节点会自动识别工作节点,可通过kubectl get nodes查看节点状态(需等待Ready状态)。

六、部署与管理应用

  1. 部署应用(以Nginx为例):
    • 通过YAML文件部署(推荐): 创建nginx-deployment.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
      spec:
        replicas: 3
        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
    • 快速创建Deployment
      kubectl create deployment nginx --image=nginx --replicas=3
      
  2. 暴露服务(让外部访问):
    • NodePort类型(适用于测试):
      kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80
      
      获取外部IP:kubectl get svc nginx(端口格式为节点IP:NodePort,如192.168.1.100:31743)。
    • LoadBalancer类型(适用于生产,需云厂商支持):
      kubectl expose deployment nginx --type=LoadBalancer --port=80 --target-port=80
      
  3. 管理应用
    • 查看Pod状态:kubectl get pods
    • 查看服务详情:kubectl describe svc nginx
    • 扩展副本数:kubectl scale deployment nginx --replicas=5
    • 删除应用:kubectl delete -f nginx-deployment.yamlkubectl delete deployment nginx

七、集群维护与管理

  1. 查看集群状态
    • 查看节点:kubectl get nodes
    • 查看所有Pod:kubectl get pods --all-namespaces
    • 查看集群信息:kubectl cluster-info
  2. 日志与故障排查
    • 查看Pod日志:kubectl logs <pod-name>
    • 进入Pod调试:kubectl exec -it <pod-name> -- /bin/bash
    • 描述资源详情:kubectl describe pod <pod-name>
  3. 更新与备份
    • 更新Kubernetes组件:通过apt upgrade升级kubeletkubeadmkubectl,升级后需重启节点;
    • 备份etcd(集群数据):使用etcdctl工具备份/var/lib/etcd目录(需提前配置etcd访问权限)。

0
看了该问题的人还看了