问题

环境是4台机器,master、node1、node2、harbor,pod状态正常,但是无法访问CLUSTER-IP,每台虚拟机网路都是Nat模式,平时可以互相ping通能够访问外网,但是master中无法访问CLUSTER-IP,在对应的节点上访问服务可以显示正常信息

CLUSTER-IP

pod状态

查看节点,发现之前是Ready,现在子节点有点不正常

查看svc情况,可以看到kube-proxy也起来了

kubectl get svc
netstat -anpt | grep :ip


访问

解决

整合了一些自己尝试的网上解决的方法,在此记录下来

一、修改k8s的配置文件,将网络模式类型修改为Nodeport(这是基础,改了不一定会好,但一定要改),

编辑文件,找到spec.type,将类型修改为NodePort

kubectl edit svc nginx-deployment


再查看一下ipvs模式需要要添加ip_vs相关模块

cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4
EOF


确认网络类型

kubectl get svc

二、设置hairpin-mode参数

相关文档说明翻译:kubernetes
如果网络没有为“发夹模式”流量生成正确配置,通常当 kube-proxy 以 iptables 模式运行,并且 Pod 与桥接网络连接时,就会发生这种情况。Kubelet 公开了一个 hairpin-mode 标志,如果 pod 试图访问它们自己的 ServicevIP,就可以让 Service 的端点重新负载到他们自己身上。hairpin-mode 标志必须设置为 hairpin-veth 或者 promiscuous-bridge。

github中有也一个相关的讨论有兴趣的可以看一下:kubelet 未使用 CNI 插件设置发夹
多种结论基本都是指向修改hairpin-mode参数,应该由cni插件来根据这个值来做对应的操作,所以veth该文件内容设置 1(本人/sys/devices/virtual/net/docker0/brif/路径下没有文件所以无法设置)

for intf in /sys/devices/virtual/net/docker0/brif/*; do echo 1> $intf/hairpin_mod; done

上面是通过cni设置hairpin-mode参数,这里再通过flannel设置参数(本人系统文件本来就是这个配置,所以无效)
/etc/cni/net.d/10-flannel.conflist

{"name": "cbr0","plugins": [{"type": "flannel","delegate": {"hairpinMode": true,"isDefaultGateway": true}},{"type": "portmap","capabilities": {"portMappings": true}}]
}

三、确认node子节点是否可用
子节点上运行指令,查看是否有如下报错。 报错原因是因为kubernetes-admin命令没有同步过来,所以解决办法需要把对应文件同步过来就好,将主节点的配置 /etc/kubernetes/admin.conf 复制到本机,再重新声明环境变量

在子节点操作,复制配置文件

scp root@主节点服务器地址:/etc/kubernetes/admin.conf /etc/kubernetes/

添加环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

申明环境变量

source ~/.bash_profile

重新查看配置

kubectl get svc


稍等一会之后基本就好了,有点莫名其妙
解决podip Destination Host Unreachable问题

k8s排查无法访问服务相关推荐

  1. k8s跨namespace访问服务

    情况:v2 namespace需要访问default namespace的rabbitmq服务 解决办法:在v2 namespace里面创建service,不指定selector, 采用type=Ex ...

  2. K8S中如何跨namespace 访问服务?为什么ping不通ClusterIP?

    1.K8S中如何跨namespace 访问服务? 2.在Pod中为什么ping不通ClusterIP? 简述: Rancher2.0中的一个用户,在K8S环境中,创建两个namespace,对应用进行 ...

  3. k8s实现nginx-ingress通过统一IP访问服务无缝对接生产上游Nginx

    前言 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案: N ...

  4. Kubernetes(k8s)集群部署七、k8s网络通信+service扩展ingress(TLS,认证,地址重写)calico网络插件(允许指定pod访问服务,禁止其他namespace访问服务)

    k8s网络通信 k8s网络通信 1.容器间通信 2.pod之间的通信 2.1同一节点的pod 2.2不同节点的pod之间的通信 flannel网络原理 flannel支持多种后端: 3.pod和ser ...

  5. k8s nodeport无法访问_k8s学习之service详解

    1.概述 通过Deployment来创建一组Pod来提供具有高可用性的服务.每个Pod都会分配一个单独的Pod IP,却存在如下两问题: 1.pod ip仅仅集群内部可见的虚拟IP,外部无法访问 2. ...

  6. Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题

    0x00 概述 本文是从K8S内微服务的角度讨论Nginx超时的问题 0x01 问题 在K8S内部署微服务后,发现部分微服务链接超时,Connection Time Out. 最近碰到了一个 Ngin ...

  7. 在K8S上的Web服务该怎么做域名解析呢?

    在K8S上的Web服务该怎么做域名解析呢? 我们这个系列的文章一直都在学习和掌握K8S各种组成部分在集群里的角色.作用和使用场景,那么针对今天这个主题任务「给K8S上的Web服务做域名解析」你觉得应该 ...

  8. k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)

    k8s使用port-forward访问集群中的应用程序 本文描述了如何使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server.这种连接方式在实际 ...

  9. 你关心才值得分享 | K8S网络安全之访问控制技术实践

    (请允许我插播下广告,便于其它伙伴了解趣码 Cloud Coder) 还是那句话,你关心才值得分享~ 最近的一起分享就在5.10本周四晚,精彩千万不要错过! Hi,你是不是也曾觉得 K8S( Kube ...

最新文章

  1. Sizeof与Strlen的区别与联系(转)
  2. 天猫总裁靖捷回答了今年双11的热点问题
  3. ASP.NET MVC3中Controller与View之间的数据传递总结
  4. MapReduce的优点
  5. wireshark筛选dhcp包_使用wireshark抓包工具,对DHCP、HTTP、DNS的数据包进行分析
  6. jzoj1610(初中)-导弹【最大匹配,最短路,二分答案】
  7. 计算机网络 学习笔记-概论
  8. CFileDialog获取文件与文件夹路径
  9. 谈谈文本匹配和多轮检索
  10. C言语教程第四章: 数组(4)
  11. 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
  12. Unlock Music音乐解锁源码
  13. 博士毕业论文英文参考文献换行_Endnote教程丨本科研究生毕业论文参考文献格式模板,一键搞定...
  14. Spring @ResponseBody未生效,无法返回json数据 前端页面显示404
  15. 【TouchDesigner】用Replicator制作选择器
  16. Error,java对常量池来说字符串xxx的UTF8表示过长
  17. 秋招面试题系列- - -Java工程师(十一)
  18. Cognitive Complexity of methods should not be too high Refactor this method to reduce its Cognitive
  19. 浅谈利用NLG技术来进行游戏自动化(生成随机剧情随机对话)的可行性
  20. iview 表单验证问题 Select 已经选择 还是弹验证提示

热门文章

  1. pytorch-实现运动鞋品牌识别
  2. @DateTimeFormat和@JsonFormat的区别
  3. 揭秘中国时尚圈情侣档
  4. 【AI作画】stable diffusion webui Linux虚拟机 Centos 详细部署教程
  5. SQL Server 2014无法连接到服务器之解决方法
  6. linux 七日杀服务器ip,linux搭建七日杀;7daytodie_centos_install
  7. 四、RabbitMQ 集群
  8. psql切换schema_psql使用技巧
  9. git 删除分支文件 删除分支
  10. foxmail 通讯录同步方法