Kubernetes v1.31.14 集群部署成功文档

张开发
2026/4/3 8:48:12 15 分钟阅读
Kubernetes v1.31.14 集群部署成功文档
概述本文档详细记录了在两台Ubuntu机器上成功部署Kubernetes v1.31.14集群的完整过程和命令并介绍了Kubernetes的主要优势。第一部分部署成功步骤及命令详解1. 系统环境准备两台机器都执行1.1 设置主机名# Master节点 sudo hostnamectl set-hostname master # Worker节点 sudo hostnamectl set-hostname worker作用为每台机器设置唯一的主机名便于在集群中识别。1.2 配置hosts文件sudo vi /etc/hosts # 添加以下内容 192.168.70.142 master 192.168.70.143 worker作用建立主机名与IP地址的映射确保节点间可以通过主机名通信。1.3 系统参数配置# 关闭swap sudo swapoff -a sudo sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab # 加载内核模块 sudo modprobe overlay sudo modprobe br_netfilter # 配置内核参数 cat EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOF sudo sysctl --system作用禁用swap内存满足Kubernetes运行要求加载容器网络所需的内核模块设置网络转发和桥接参数1.4 安装依赖工具sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release作用安装后续步骤所需的基础工具。2. 安装容器运行时Containerd两台机器都执行2.1 安装Containerdsudo apt update sudo apt install -y containerd作用安装Kubernetes推荐的容器运行时。2.2 配置Containerdsudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo sed -i s/SystemdCgroup false/SystemdCgroup true/ /etc/containerd/config.toml作用生成默认配置并启用systemd cgroup驱动。2.3 启动Containerdsudo systemctl restart containerd sudo systemctl enable containerd作用启动并设置容器运行时开机自启。3. 安装Kubernetes组件两台机器都执行3.1 添加Kubernetes仓库curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo deb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ / | sudo tee /etc/apt/sources.list.d/kubernetes.list作用添加Kubernetes官方软件源。3.2 安装Kubernetes组件sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl作用kubelet节点代理管理Pod和容器kubeadm集群初始化工具kubectl集群管理命令行工具apt-mark hold锁定版本防止意外升级4. 初始化Master节点仅在Master执行4.1 初始化Kubernetes集群sudo kubeadm init \ --apiserver-advertise-address192.168.70.142 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.31.14 \ --service-cidr10.96.0.0/12 \ --pod-network-cidr10.244.0.0/16 \ --cri-socketunix:///var/run/containerd/containerd.sock作用--apiserver-advertise-address指定API服务器监听的IP地址--image-repository使用国内镜像源加速下载--service-cidr设置Kubernetes服务网段--pod-network-cidr设置Pod网络网段与Flannel兼容4.2 配置kubectlmkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config作用配置kubectl访问集群的认证信息。5. 安装网络插件仅在Master执行5.1 安装CNI插件# 下载CNI插件二进制文件 sudo mkdir -p /opt/cni/bin cd /tmp wget https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz sudo tar -xzf cni-plugins-linux-amd64-v1.4.0.tgz -C /opt/cni/bin作用安装容器网络接口插件为Pod提供网络功能。5.2 安装Flannel网络kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml作用部署Flannel网络插件实现Pod跨节点通信。5.3 允许Master节点调度Podkubectl taint nodes --all node-role.kubernetes.io/control-plane-作用移除Master节点的污点允许在其上调度工作负载。6. Worker节点加入集群仅在Worker执行6.1 加入集群kubeadm join 192.168.70.142:6443 --token i4w6vt.nitxbqxk3td292br --discovery-token-ca-cert-hash sha256:a0a705378510a3f6b4e3d2dbe1a7de4219a10f490eb3da92a1a71076cd7b2dee作用将Worker节点加入Kubernetes集群。6.2 配置Worker节点的kubectl可选# 从Master节点复制配置文件 mkdir -p ~/.kube scp root192.168.70.142:/etc/kubernetes/admin.conf ~/.kube/config chmod 600 ~/.kube/config作用在Worker节点上配置kubectl便于管理集群。7. 验证集群状态7.1 检查节点状态kubectl get nodes预期输出NAME STATUS ROLES AGE VERSION master Ready control-plane 45m v1.31.14 worker Ready none 10m v1.31.147.2 检查所有Pod状态kubectl get pods -A作用验证所有系统Pod都处于Running状态。7.3 测试集群功能# 部署测试应用 kubectl create deployment nginx --imageswr.cn-north-1.myhuaweicloud.com/library/nginx:alpine kubectl expose deployment nginx --port80 --typeNodePort # 验证应用运行 kubectl get deployments,svc,pods -l appnginx作用通过部署实际应用验证集群功能完整性。第二部分Kubernetes成功部署后的核心优势1. 自动化运维能力自愈功能自动重启当容器异常退出时自动重启健康检查通过探针自动检测应用健康状态节点故障转移节点故障时自动将Pod迁移到健康节点自动扩缩容# 水平Pod自动扩缩容 kubectl autoscale deployment nginx --min2 --max10 --cpu-percent80优势根据负载自动调整应用实例数量优化资源利用率。2. 服务发现和负载均衡内置服务发现# 创建服务 kubectl expose deployment nginx --port80 --target-port80优势自动为应用提供DNS名称和服务发现简化微服务通信。负载均衡# 创建负载均衡服务 kubectl expose deployment nginx --port80 --typeLoadBalancer优势自动分配流量到多个Pod实例提高应用可用性。3. 滚动更新和回滚无缝更新# 滚动更新应用 kubectl set image deployment/nginx nginxnginx:1.21优势零停机时间更新应用确保业务连续性。一键回滚# 回滚到上一版本 kubectl rollout undo deployment/nginx优势快速恢复问题版本降低部署风险。4. 存储编排持久化存储# 创建持久化存储卷 kubectl apply -f - EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi EOF优势动态提供持久化存储确保数据安全。5. 配置和密钥管理配置管理# 创建配置映射 kubectl create configmap app-config --from-literalkeyvalue优势将配置与应用镜像分离提高可移植性。密钥管理# 创建密钥 kubectl create secret generic app-secret --from-literalpasswordsecret优势安全地管理敏感信息如密码、API密钥等。6. 资源管理和优化资源限制# 设置资源限制 kubectl patch deployment nginx -p {spec:{template:{spec:{containers:[{name:nginx,resources:{limits:{cpu:500m,memory:512Mi},requests:{cpu:250m,memory:256Mi}}}]}}}}优势精确控制资源分配防止应用间资源竞争。7. 多租户和命名空间隔离命名空间管理# 创建开发环境命名空间 kubectl create namespace development优势实现环境隔离支持多团队协作。8. 监控和日志收集集群监控# 查看资源使用情况 kubectl top nodes kubectl top pods优势内置资源监控便于容量规划。第三部分部署成功验证清单✅ 核心组件状态验证所有节点状态为Ready控制平面组件正常运行网络插件Flannel正常运行CoreDNS服务正常kube-proxy正常运行✅ 网络功能验证Pod间跨节点通信正常服务发现和DNS解析正常节点间网络连通性正常✅ 应用部署验证Pod创建和调度正常服务暴露和访问正常应用跨节点分布正常✅ 管理功能验证kubectl命令行工具正常集群配置正确认证授权正常

更多文章