首页主机资讯k8s如何在centos上部署应用

k8s如何在centos上部署应用

时间2025-11-20 16:15:04发布访客分类主机资讯浏览1323
导读:在 CentOS 上部署应用到 Kubernetes 的实操指南 一 环境准备与前置条件 系统建议:CentOS 7/8,至少2 核 CPU、2 GB 内存、可外网访问。 主机名与解析:为各节点设置主机名(如 master、node1),...

在 CentOS 上部署应用到 Kubernetes 的实操指南

一 环境准备与前置条件

  • 系统建议:CentOS 7/8,至少2 核 CPU2 GB 内存、可外网访问。
  • 主机名与解析:为各节点设置主机名(如 master、node1),并在 /etc/hosts 配置解析。
  • 时间同步:安装并启用 NTP,例如:sudo yum install -y ntpdate & & sudo ntpdate ntp.aliyun.com
  • 关闭 Swap:sudo swapoff -a,并在 /etc/fstab 注释 swap 行。
  • 内核与转发:启用桥接与转发
    • sudo modprobe br_netfilter
    • echo 'net.bridge.bridge-nf-call-iptables=1' | sudo tee -a /etc/sysctl.conf
    • echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
    • sudo sysctl -p
  • 防火墙与 SELinux(测试环境常用做法):
    • sudo systemctl stop firewalld & & sudo systemctl disable firewalld
    • sudo setenforce 0 & & sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
  • 容器运行时:安装 Docker CE(或 containerd),并配置 cgroup driver=systemd

二 安装容器运行时与 Kubernetes 组件

  • 安装 Docker(示例为国内镜像源):
    • sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    • sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    • sudo yum install -y docker-ce docker-ce-cli containerd.io
    • sudo systemctl enable --now docker
  • 配置 Docker 使用 systemd cgroup:
    • sudo mkdir -p /etc/docker
    • echo '{ "exec-opts":["native.cgroupdriver=systemd"]} ' | sudo tee /etc/docker/daemon.json
    • sudo systemctl restart docker
  • 安装 kubeadm、kubelet、kubectl(k8s 官方源):
    • cat < < EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
      enabled=1
      gpgcheck=1
      repo_gpgcheck=1
      gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      EOF
    • sudo yum install -y kubelet kubeadm kubectl
    • sudo systemctl enable --now kubelet

三 初始化 Master 节点并加入 Node

  • 初始化控制平面(将 < Master_IP> 替换为你的主节点 IP):
    • sudo kubeadm init --apiserver-advertise-address=< Master_IP> --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
  • 安装 Pod 网络插件(Flannel):
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入 Worker 节点(在 Master 初始化成功后输出的命令中复制执行):
    • sudo kubeadm join < Master_IP> :6443 --token < token> --discovery-token-ca-cert-hash < hash>
  • 验证集群状态:
    • kubectl get nodes
    • kubectl get pods -A

四 部署示例应用 Nginx

  • 方式一 使用 Deployment 与 Service(推荐):
    • 创建文件 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
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        type: NodePort
        selector:
          app: nginx
        ports:
          - protocol: TCP
            port: 80
            targetPort: 80
            nodePort: 30080
      
    • 部署与验证:
      • kubectl apply -f nginx-deployment.yaml
      • kubectl get deploy,svc,pods
      • 访问:浏览器打开 http://< 任意节点IP> :30080
  • 方式二 一条命令快速创建(适合测试):
    • kubectl create deployment nginx --image=nginx
    • kubectl expose deployment nginx --port=80 --type=NodePort
    • kubectl get svc nginx 查看分配的 NodePort 后访问。

五 常见问题与排查要点

  • cgroup 驱动不一致导致 kubelet 异常:确保 Docker 使用 systemd 驱动(见上文 Docker 配置)。
  • 节点 NotReady:检查 Flannel 是否就绪(kubectl get pods -n kube-flannel),以及节点网络与路由。
  • kubeadm join 失败:Token 默认 24 小时 有效,过期可在 Master 上执行 kubeadm token create --print-join-command 重新生成。
  • 镜像拉取慢或失败:可使用国内镜像仓库或提前 kubeadm config images pull 拉取所需镜像。
  • 需要外网访问:Service 使用 NodePortLoadBalancer;云上优先 LoadBalancer,裸机可结合 MetalLB
  • 安全建议(生产环境):不要长期关闭 firewalld/SELinux,按需放行端口(如 6443、10250、30080 等),并启用 RBAC、镜像签名与审计。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: k8s如何在centos上部署应用
本文地址: https://pptw.com/jishu/752154.html
centos与k8s版本选择 centos与k8s网络配置

游客 回复需填写必要信息