温馨提示×

Debian与Kubernetes集成开发实践

小樊
48
2025-09-19 16:09:07
栏目: 智能运维

Debian与Kubernetes集成开发实践指南

一、前置准备

在开始集成前,需完成以下基础配置,确保环境符合Kubernetes运行要求:

  • 系统要求:选择Debian 10及以上稳定版本,每个节点(主/工作节点)需满足2核CPU、2GB RAM、20GB磁盘空间,且具备稳定互联网连接。
  • 系统更新:运行sudo apt update && sudo apt upgrade -y更新系统软件包,修复潜在漏洞。
  • 关闭Swap分区:Kubernetes要求禁用Swap以确保内存管理的稳定性。执行sudo swapoff -a临时关闭,编辑/etc/fstab文件注释掉Swap相关行(如sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab)实现永久禁用。
  • 配置主机名与Hosts文件:在每个节点上设置唯一主机名(如k8s-masterk8s-node1),并通过sudo hostnamectl set-hostname <hostname>生效;编辑/etc/hosts文件,添加节点IP与主机名的映射(如192.168.1.1 k8s-master192.168.1.2 k8s-node1),确保节点间可通过主机名通信。
  • 同步系统时间:安装NTP服务(如sudo apt install -y ntp)并启动,避免因时间不同步导致集群认证失败。

二、安装Docker容器运行时

Kubernetes依赖容器运行时管理容器,推荐使用Docker(社区主流选择):

  • 添加Docker官方GPG密钥与源:运行curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -导入密钥;执行echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list添加Docker软件源。
  • 安装Docker引擎:运行sudo apt update更新源,再执行sudo apt install -y docker-ce docker-ce-cli containerd.io安装Docker。
  • 启动Docker服务:执行sudo systemctl enable --now docker设置Docker开机自启,并通过sudo systemctl status docker验证服务状态(显示“active (running)”即为成功)。

三、安装Kubernetes核心组件

Kubernetes的核心组件(kubelet、kubeadm、kubectl)需通过官方源安装:

  • 添加Kubernetes官方源:运行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添加Kubernetes软件源。
  • 安装核心组件:运行sudo apt update更新源,再执行sudo apt install -y kubelet kubeadm kubectl安装组件;为避免组件自动升级导致集群不稳定,执行sudo apt-mark hold kubelet kubeadm kubectl锁定版本。

四、初始化Kubernetes主节点

主节点负责集群管理(如调度、API服务),需通过kubeadm完成初始化:

  • 初始化集群:在主节点上执行sudo kubeadm init --pod-network-cidr=10.244.0.0/16--pod-network-cidr指定Pod网络CIDR,需与后续网络插件兼容,如Flannel默认使用10.244.0.0/16)。
  • 配置kubectl:初始化完成后,会输出加入工作节点的命令(需保存);运行mkdir -p $HOME/.kube创建kubeconfig目录,再执行sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config复制配置文件,最后通过sudo chown $(id -u):$(id -g) $HOME/.kube/config设置正确权限,确保当前用户可使用kubectl管理集群。
  • 验证主节点状态:运行kubectl get nodes,主节点应显示“NotReady”(需安装网络插件后变为“Ready”)。

五、安装网络插件

Kubernetes需要网络插件实现Pod间通信,常用插件包括Flannel(轻量级)、Calico(高性能):

  • 安装Flannel插件:运行kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml,等待插件Pod全部启动(通过kubectl get pods -n kube-system验证,状态应为“Running”)。
  • 安装Calico插件:运行kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml,同样需验证Pod状态。

六、加入工作节点

工作节点负责运行应用容器,需通过主节点初始化时生成的命令加入:

  • 获取加入命令:主节点初始化完成后,终端会输出类似kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>的命令(需保存)。
  • 在工作节点执行命令:将上述命令复制到每个工作节点的终端,运行后即可将节点加入集群。可通过主节点的kubectl get nodes验证工作节点状态(变为“Ready”即为成功)。

七、部署测试应用

通过部署一个简单的Nginx应用,验证集群功能:

  • 创建Deployment:编写nginx-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: nginx:latest
            ports:
            - containerPort: 80
    
    运行kubectl apply -f nginx-deployment.yaml创建Deployment。
  • 暴露Service:编写nginx-service.yaml文件,内容如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: NodePort
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
    
    运行kubectl apply -f nginx-service.yaml暴露Service,通过kubectl get svc nginx-service获取NodePort(如30080),然后在浏览器访问<master-node-ip>:30080<worker-node-ip>:30080,若看到Nginx欢迎页面则说明部署成功。

八、自动化运维实践(可选但推荐)

为提升集群管理效率,可引入以下自动化工具:

  • 自动化脚本:编写Shell脚本实现常见操作(如检查Pod状态、备份配置),例如:
    #!/bin/bash
    echo "Checking Pod status:"
    kubectl get pods --all-namespaces
    echo "Checking node status:"
    kubectl get nodes
    
  • 配置管理工具:使用Ansible编写Playbook,自动化安装Kubernetes组件、配置网络插件等任务,减少手动操作误差。
  • CI/CD集成:通过Jenkins、GitLab CI搭建流水线,实现代码提交后自动构建镜像、推送至镜像仓库、部署至Kubernetes集群的端到端流程。
  • 监控与日志:部署Prometheus+Grafana监控集群性能(如CPU、内存使用率),使用ELK(Elasticsearch+Logstash+Kibana)收集、分析应用日志,快速定位问题。

0