kubernetes 集群网络不通解决办法

解决Kubernetes集群中Pod间通信问题,通过安装Flannel实现网络打通。详细步骤包括停止Docker服务,配置Flannel与Etcd的连接参数,生成及验证网络配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在虚拟机上用源码安装的1.5.2集群,由于机器性能问题,后来直接就把它干掉了,使用上篇的方式再次安装了单机器上的服务,在按照书上做实验时,发现节点之间无法进行通讯,网络不通,按理来说,单机器上的是不存在这样的问题;回想自己的操作,突想到一个知识点,k8s的创建RC的时候会自动生成pod,该pod也会生成一个属于自己的ip,但是服务是后台的svc提供的,svc生成的ip是无法访问的,所以需要装flannel工具

两种安装的方法: 
https://github.com/coreos/flannel/releases 去github上下载amd安装包,解压出来mk-docker-opts.sh,flanneld两个二进制文件,将其复制到/usr/bin/ ,编辑:vim /usr/lib/systemd/system/flanneld.service 
[Unit] 
Description=Flanneld overlay address etcd agent 
After=network.target 
After=network-online.target 
Wants=network-online.target 
After=etcd.service 
Before=docker.service

[Service] 
Type=notify 
EnvironmentFile=/etc/sysconfig/flanneld 
EnvironmentFile=-/etc/sysconfig/docker-network 
ExecStart=/usr/bin/flanneld-start $FLANNEL_OPTIONS 
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker 
Restart=on-failure

[Install] 
WantedBy=multi-user.target 
RequiredBy=docker.service 
vim /etc/sysconfig/flanneld

配置文件:config:

FLANNEL_ETCD_ENDPOINTS=”http://127.0.0.1:2379”  ##这条是你自己的etcd的url 
FLANNEL_ETCD_PREFIX=”/atomic.io/network”              ##这是flannel设置对应ip key存放位置

etcdctl set /atomic.io/network/config ‘{ “Network”: “10.1.0.0/16” }’  设置ip  
tcdctl get  /atomic.io/network/config ‘{ “Network”: “10.1.0.0/16” }’  查看是否设置成功

systemctl stop docker  启动flanneld之前需要停掉docker 否则会导致容器通讯出错 
systemctl start flanneld  
mk-docker-opts.sh -i 
source /run/flannel/subnet.env  
ifconfig docker0 ${FLANNEL_SUBNET}

ip addr 
3: docker0: 
--------------------- 
作者:Arno_e 
来源:优快云 
原文:https://blog.youkuaiyun.com/Arno_e/article/details/77249018 
版权声明:本文为博主原创文章,转载请附上博文链接!

### Kubernetes 集群重启操作指南与故障排查 #### 一、Kubernetes 集群重启概述 在 Kubernetes 中,集群的重启通常涉及多个组件的操作。这些组件包括 Master 节点上的控制平面(API Server、Controller Manager 和 Scheduler),以及 Worker 节点上的 kubelet 和容器运行时环境(如 Docker 或 containerd)。为了确保服务连续性和数据一致性,在执行任何大规模重启之前,建议先备份配置文件和重要资源。 对于某些场景下的部分组件重启可以采用滚动更新的方式完成而无需完全停机整个集群[^1]。 --- #### 二、具体操作方法 ##### 1. **Master 节点重启** 如果需要重启 Master 节点,则可以通过以下命令逐一停止并重新启动各个核心服务: ```bash sudo systemctl stop kube-apiserver.service \ kube-controller-manager.service \ kube-scheduler.service # 等待几秒后再依次启动它们 sudo systemctl start kube-apiserver.service \ kube-controller-manager.service \ kube-scheduler.service ``` 上述过程适用于单个 master 的情况;如果是高可用架构下多台 master 组成的情况则需更加谨慎处理以防止脑裂现象发生[^2]。 ##### 2. **Worker 节点重启** 针对 worker 节点而言,主要关注的是 `kubelet` 这个守护进程的状态及其依赖项比如 cgroup driver 设置是否匹配等问题已经提到过一次。下面给出通用做法来安全地重置某个节点状态: ```bash kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data sudo systemctl restart docker kubelet kubectl uncordon <node-name> ``` 这里通过 kubectl 命令将该节点标记为不可调度(unready),驱逐上面运行的工作负载到其他健康节点上之后再做实际物理机器层面或者软件层面上的动作最后恢复其正常工作模式即可。 另外值得注意的是当遇到像 etcd 数据库这样的有状态应用实例所在的特殊位置时候要格外小心对待因为涉及到持久化存储管理等方面的知识点。 --- #### 三、常见问题分析及解决方案 | **症状描述** | **可能原因** | **解决办法** | |--------------|------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | Pod 不就绪 | CNI 插件未正确初始化或网络策略冲突 | 查看相关日志 `/var/log/kubelet.log`,确认插件安装成功与否,必要时卸载重配 | | Etcd 同步失败| 时间不同步导致证书验证错误 | 使用 ntp 客户端同步各服务器时间;检查 ssl/tls 参数设置准确性 | | Kube-proxy异常| iptables 规则混乱 | 清理旧版残留规则:`iptables -F && iptables -X`;依据官方文档调整代理模式(如 ipvs 替代原生方式) | 以上表格总结了几类典型的运维难题及其对应的调试思路供参考使用. --- #### 四、自动化工具推荐 除了手动干预外还可以借助一些开源项目简化日常维护流程例如 Prometheus+Grafana 实现监控告警功能及时发现潜在风险提前预防事故扩大范围;Ansible Playbook 编写标准化脚本批量部署升级减少人为失误概率等等都是不错的选择方向值得深入探索实践一番. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值