Ubuntu Kubernetes如何进行容器编排
导读:在 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) 等端口可达。 - 准备容器运行时(推荐 Docker 或 containerd),下文以 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
- Flannel:
- 加入工作节点(在每台 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
