首页主机资讯Ubuntu Kubernetes如何进行容器编排

Ubuntu Kubernetes如何进行容器编排

时间2025-11-17 14:03:05发布访客分类主机资讯浏览741
导读:在 Ubuntu 上使用 Kubernetes 进行容器编排 一 环境准备 操作系统建议使用 Ubuntu 20.04/22.04,每个节点至少 2 GB 内存、2 核 CPU,并确保节点间网络互通。 关闭 Swap:执行 sudo sw...

在 Ubuntu 上使用 Kubernetes 进行容器编排

一 环境准备

  • 操作系统建议使用 Ubuntu 20.04/22.04,每个节点至少 2 GB 内存、2 核 CPU,并确保节点间网络互通。
  • 关闭 Swap:执行 sudo swapoff -a,并在 /etc/fstab 中注释 swap 行,避免 kubelet 启动失败。
  • 设置唯一 主机名静态 IP,并在所有节点的 /etc/hosts 中添加映射,便于解析。
  • 允许相关端口或临时关闭防火墙(如 ufw/iptables),确保 6443、10250、10251、10252、8472(Flannel VXLAN) 等端口可达。
  • 准备容器运行时(推荐 Dockercontainerd),下文以 Docker 为例。

二 安装与初始化集群

  • 安装 Docker(如尚未安装):
    sudo apt update
    sudo apt install -y docker.io
    sudo systemctl enable --now docker
    
  • 安装 kubeadm、kubelet、kubectl:
    sudo apt update &
        &
         sudo apt install -y apt-transport-https curl
    curl -fsSL 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
    
  • 初始化控制平面(主节点):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    # 若使用 Calico,可按官方清单指定 CIDR,例如:--pod-network-cidr=192.168.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
    
  • 安装网络插件(二选一):
    • Flannel:
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      
    • Calico:
      kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
      
  • 加入工作节点(在每台 worker 上执行 kubeadm init 输出中的 kubeadm join ... 命令)。

三 基本编排示例

  • 部署应用:
    kubectl create deployment nginx --image=nginx:1.25 --replicas=3
    kubectl expose deployment nginx --port=80 --type=NodePort
    
  • 验证与访问:
    kubectl get nodes -o wide
    kubectl get pods -o wide
    kubectl get svc nginx
    # 临时本地访问
    kubectl port-forward deployment/nginx 8080:80
    # 或在浏览器访问 http://<
        任一节点IP>
        :<
        NodePort>
        
    
  • 扩缩容与滚动更新:
    kubectl scale deployment nginx --replicas=5
    kubectl set image deployment/nginx nginx=nginx:1.27
    kubectl rollout status deployment/nginx
    kubectl rollout undo deployment/nginx
    
  • 配置与查看:
    kubectl describe pod <
        pod-name>
        
    kubectl logs <
        pod-name>
        
    kubectl exec -it <
        pod-name>
         -- sh
    

四 常用运维命令

  • 节点与系统信息:
    kubectl get nodes
    kubectl describe node <
        node-name>
    
    kubectl top nodes
    kubectl top pods
    
  • 资源清理:
    kubectl delete service nginx
    kubectl delete deployment nginx
    # 重置节点(谨慎:会清理本机 K8s 状态)
    sudo kubeadm reset -f
    

五 常见问题与优化

  • 节点 NotReady:多因网络插件未就绪或 Pod CIDR 与插件不匹配;确认已成功应用 Flannel/Calico 清单,且 --pod-network-cidr 与所选插件一致。
  • cgroup 驱动不一致:若 Docker 使用 cgroupfs,建议切换为 systemd 以与 kubelet 一致:
    # /etc/docker/daemon.json
    {
    
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
     "max-size": "100m" }
    ,
      "storage-driver": "overlay2"
    }
        
    sudo systemctl restart docker
    
  • 镜像拉取慢:配置国内镜像仓库(imagePullSecrets 或节点 daemon.json 的 registry mirrors)。
  • 防火墙/安全组:放行 6443、10250、8472 等端口,或测试环境临时关闭防火墙。
  • 生产建议:使用 containerd 作为运行时、启用 RBAC网络策略(NetworkPolicy)PodSecurity 准入控制,并配置 kubelet 资源预留集群自动扩缩容(Cluster Autoscaler)

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


若转载请注明出处: Ubuntu Kubernetes如何进行容器编排
本文地址: https://pptw.com/jishu/748915.html
linux上phpstorm如何配置Xdebug Kubernetes在Ubuntu上的插件怎么安装

游客 回复需填写必要信息