当前位置: 首页 > news >正文

K8s/Kubernetes(v1.23.17)三节点集群部署全过程的总结与问题回顾

Kubernetes(v1.23.17)三节点集群部署全过程的总结与问题回顾

一、总体目标

本次目标是在 本地三台 CentOS 7 虚拟机 上搭建一个 Kubernetes v1.23.17 集群,实现:

  • 1 个 Master 节点(控制面)
  • 2 个 Worker 节点(计算节点)
  • 集群内 Pod 网络互通(Flannel)
  • Service 暴露并通过浏览器访问(NodePort)

二、安装阶段主要步骤

1. 环境准备

  • 系统:CentOS 7 (3.10.0 内核)

  • 容器:Docker 20.10.9

  • 安装 kubeadm、kubelet、kubectl 三件套

  • 设置内核转发参数:

    cat <<EOF | 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
    sysctl --system
    
  • 关闭防火墙与 swap:

    systemctl disable --now firewalld
    swapoff -a
    sed -ri 's@(^[^#].*\s+swap\s+)@#\1@' /etc/fstab
    

三、Master 初始化

命令:

kubeadm init \
--apiserver-advertise-address=192.168.232.101 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.23.17 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=172.20.0.0/16

关键点与问题:

  • 第一次报错:manifest already exists

    • 原因:之前初始化过,需要清理旧文件。
    • 解决:kubeadm reset -f && rm -rf /etc/kubernetes/manifests/*
  • 成功初始化后运行:

export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get nodes

四、网络插件(Flannel)

问题与解决:

  • curl 无法访问 GitHub raw

  • 解决:换国内代理源

    curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml -O
    
  • 修改 Network 为与 --pod-network-cidr 一致:

    sed -i 's#10.244.0.0/16#172.20.0.0/16#' kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    
  • Worker 节点 Flannel 启动失败 (pause 镜像下载失败)

  • 解决:

    kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
    

五、Worker 节点加入集群

常见错误:

报错信息原因解决
config.yaml not found上次 join 残留执行 kubeadm reset -f 并清理 /var/lib/kubelet
User "system:anonymous" cannot get cluster-infocluster-info 没授权匿名读Master 上执行: kubeadm init phase bootstrap-token
User "system:bootstrap:xxx" cannot get kubeadm-configbootstrap 组权限不足执行: kubectl create rolebinding kubeadm:kubeadm-config-reader --role=kubeadm:kubeadm-config-reader --group=system:bootstrappers:kubeadm:default-node-token -n kube-system
configmaps kubelet-config-1.23 not found缺失默认配置Master 执行: kubeadm init phase upload-config kubeadm kubeadm init phase upload-config kubelet

🔧 六、验证网络连通性

  • 所有节点 Flannel 与 kube-proxy 都应为 Running

    kubectl -n kube-flannel get pods -o wide
    kubectl -n kube-system get pods -l k8s-app=kube-proxy -o wide
    
  • 所有节点状态:

    kubectl get nodes -o wide
    

    均为 Ready 即网络通畅。


七、Service 暴露与浏览器访问

1. 创建示例应用

kubectl create deployment web --image=nginx:1.25

2. 暴露服务为 NodePort

kubectl expose deployment web --port=80 --type=NodePort

3. 查看 NodePort

kubectl get svc web -o wide
# 例如:PORT(S)=80:31759/TCP

4. 在浏览器访问:

http://192.168.232.102:31759

成功看到 NGINX 欢迎页,说明集群可从外部访问。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


🧾 八、最终验证清单

检查项命令结果
集群健康kubectl get nodes所有节点 Ready
控制面健康kubectl get pods -n kube-system全 Running
网络插件kubectl get pods -n kube-flannel全 Running
服务访问浏览器 http://节点IP:NodePort页面可打开

在这里插入图片描述

九、最终状态

节点IP角色状态
k8s-master192.168.232.101masterReady
k8s-worker02192.168.232.102workerReady
k8s-worker03192.168.232.103workerReady
http://www.dtcms.com/a/573624.html

相关文章:

  • 调试oracle函数性能(嵌入存储过程)
  • React 元素渲染
  • 个人开发者短信验证码接入指南-阿里云
  • 移动端优秀网站上海传媒公司名字
  • 建设一个网站的需求分析一个网站开发流程
  • PsPasswd(7.19):远程修改密码的边界与合规建议
  • 【钉钉多元表格(自动化)】钉钉群根据表格 自动推送当天值日生信息
  • LangFlow源码深度解析:Component核心机制与生态体系
  • dede织梦仿站网站建设做网站赚谁的钱
  • DropLoRA技术详解:克服大模型微调过拟合的创新方法
  • 【剑斩OFFER】算法的暴力美学——串联所有单词的字串
  • 学习Linux——进程管理
  • 在k8s中部署seaweedfs,上传文件到seaweedfs方法
  • 极氪与火山引擎深化合作,Data Agent赋能车辆数据管理效率
  • Kotlin 使用命令行编译
  • 1450dpi+93% 相似度,这款发光纳米纤维让皮肤纹理“复印”更精准
  • 匠魂(1)
  • LeetCode Hot100 自用
  • 做婚介网站可行性报告模板绵阳网站建设多少钱
  • 单位服务器网站打不开网站参考页面设计
  • 陇南建设网站大良营销网站建设信息
  • mac M系列芯片 unity 安装会遇到的错误以及解决
  • Reka UI - 一款免费开源的 Vue 无头 UI 组件库,样式定制开发项目的绝佳选择
  • 个人二级网站怎么做营销咨询服务合同
  • UDP-复用分用
  • 做网站需要什么特色网站制作入门
  • QListWidget的图标模式
  • 【大模型实战笔记 6】Prompt Engineering 提示词工程
  • 能源生态系统的架构设计:利益相关方治理与跨行业协作
  • 潍坊seo管理浙江seo外包