20250710-1-Kubernetes 集群部署、配置和验证-搭建K8s集群常见问题_笔记

发布于:2025-07-12 ⋅ 阅读:(21) ⋅ 点赞:(0)
一、Kubernetes集群搭建(下篇)
1. 集群搭建核心步骤
  • Master节点创建:使用kubeadm工具初始化Master节点
  • Node节点加入:通过kubeadm join <Master节点IP和端口>命令将工作节点加入集群
  • 网络插件部署:执行kubectl apply -f calico.yaml部署Calico网络插件
  • Dashboard安装:部署Web UI管理界面用于可视化操作
2. Calico网络配置
  • YAML文件下载:使用wget https://docs.projectcalico.org/manifests/calico.yaml获取配置文件
  • 关键参数修改:必须确保CALICO_IPV4_POOL_CIDR与kubeadm init时指定的pod-network-cidr保持一致
  • 部署验证:通过kubectl get pods -n kube-system检查所有Calico Pod状态是否为Running
3. 集群测试方法
  • 测试Pod创建:
  • 服务访问验证:通过http://NodeIP:Port访问暴露的Nginx服务
  • 状态检查:使用kubectl get pod,svc查看资源创建状态
4. Dashboard部署
  • YAML文件获取:从GitHub下载推荐配置recommended.yaml
  • 服务类型修改:将Service类型改为NodePort并指定端口30001
  • 访问控制配置:
  • 访问方式:通过https://NodeIP:30001使用token登录
5. 常见问题排查
  • 节点状态验证:使用kubectl get node检查所有节点是否Ready
  • 典型问题现象:
    • Pod网络不通(Calico配置错误)
    • 节点无法加入集群(token过期或网络连接问题)
    • Dashboard访问失败(RBAC权限未正确配置)
  • 解决思路:
    • 检查/var/log/messages系统日志
    • 验证网络插件Pod日志
    • 重新生成join命令的token
二、搭建K8S集群常见问题解惑

1. kubeadm init失败

  • IP指定问题:在公有云搭建时需指定内网IP而非公网IP,因为公网IP通常是浮动IP未直接配置在虚拟机内
  • 初始化准备不足:常见问题包括未关闭swap(日志中会有明显提示)和未关闭selinux(可能导致服务无法启动)
  • 重置方法:执行失败后需先运行kubeadm reset清除之前配置,再重新执行init命令
  • 重置操作:kubeadm reset会清空主机上所有由kubeadm init或join所做的更改
  • 配置文件引导:可使用配置文件替代命令行参数,示例配置包含:
2. Dashboard登录进去没有显示资源



  • token复制问题:最常见原因是复制token时包含了末尾空格,导致认证失败
  • token验证:需确认获取的token对应的是dashboard-admin账户,可通过检查token上方的Annotations确认
  • 错误表现:登录后右上角会出现警告喇叭图标,提示权限不足
  • 创建服务账户:
  • 替代登录方式:除token外还可使用kubeconfig文件登录,但token方式仍是主流
3. 网络组件启动问题



  • 镜像下载慢:部分用户网络可能导致Calico镜像下载缓慢,需等待10-20分钟
  • 启动错误排查:
    • 使用kubectl get pods -n kube-system查看Pod状态
    • 对异常Pod执行kubectl logs <pod-name> -n kube-system查看详细日志
  • CoreDNS问题处理:在所有节点执行镜像拉取和重命名:
4. ComponentStatus连接拒绝问题



  • 问题本质:v1.19+版本已弃用ComponentStatus检查,但集群实际运行正常
  • 验证方法:kubectl get node显示节点Ready即表示集群正常
  • 解决方案:
    • 进入配置目录:cd /etc/kubernetes/manifests/
    • 编辑kube-scheduler.yaml和kube-controller-manager.yaml
    • 注释掉--port=0参数
    • 等待约30秒组件自动重启
  • 配置文件位置:/etc/kubernetes/manifests/目录包含核心组件配置
  • 修改要点:找到spec.containers.command中的--port=0参数行,添加#注释
  • 生效验证:修改后组件会自动重启,再次执行kubectl get cs应显示Healthy
三、使用kubeadm搭建K8S集群

1. 安装目录结构

  • 工作目录:所有Kubernetes组件的工作目录位于/etc/kubernetes/下
  • 配置文件:以.conf结尾的文件都是组件的配置文件,包含大量参数配置
  • manifests目录:存放Kubernetes核心组件的启动参数配置文件
  • pki目录:存放集群所有的证书文件,包括:
    • apiserver相关证书(apiserver.crt、apiserver.key等)
    • CA根证书(ca.crt、ca.key)
    • 前端代理证书(front-proxy-*)
    • 服务账户密钥(sa.key、sa.pub)
2. 证书管理机制
  • 自动生成:kubeadm会自动处理所有HTTPS通信所需的证书生成
  • 证书位置:所有证书默认生成到/etc/kubernetes/pki/目录
  • 证书用途:基于根证书颁发各种客户端证书,保障集群组件间安全通信
  • 与二进制安装区别:相比手动搭建,kubeadm隐藏了复杂的证书生成过程
3. 部署测试流程
  • 创建测试Pod:
  • 验证服务:
    • 访问地址:http://NodeIP:Port
  • Dashboard部署:
4. CoreDNS问题处理
  • 手动拉取镜像:
  • 自动恢复:完成镜像拉取后,CoreDNS Pod会自动恢复正常状态
四、知识小结

知识点

核心内容

常见问题/易错点

解决方案

集群初始化

使用kubeadm init命令初始化master节点

1. IP指定错误(公有云需用内网IP)

2. swap未关闭

3. selinux未禁用

1. 指定正确内网IP

2. 关闭swap

3. 禁用selinux后执行kubeadm reset重置

Dashboard访问

通过token登录Dashboard

1. 复制的token包含空格

2. 使用了错误的token

1. 精确复制token不带空格

2. 确认token对应dashboard-admin账户

Calico网络组件

部署集群网络插件

1. 镜像下载慢导致Pending

2. 组件启动失败(CrashLoopBackOff)

1. 耐心等待或更换镜像源

2. 查看日志kubectl logs -n kube-system <pod-name>

节点加入集群

使用kubeadm join添加节点

系统参数net.ipv4.ip_forward未启用

手动设置sysctl net.ipv4.ip_forward=1

组件状态检查

kubectl get cs查看控制平面状态

调度器和控制器显示连接拒绝

修改/etc/kubernetes/manifests下对应yaml文件,注释port: 0配置

工作目录结构

/etc/kubernetes集群配置目录

不熟悉各子目录功能

pki/存放证书

manifests/组件配置

admin.conf集群凭证

学习建议

八小时外学习提升

职场发展差距源于业余时间利用

重点投入技术实践和问题排查能力培养

问题排查方法

集群故障诊断流程

缺乏系统排查经验

1. 查看日志

2. 搜索引擎查询

3. 社区求助

4. 保持实践勇气


网站公告

今日签到

点亮在社区的每一天
去签到