首页
学习
活动
专区
圈层
工具
发布

当 NetworkPolicy 默认拒绝 邂逅 egress 遗漏:一次把全集群 DNS 掐断的惨痛事故复盘

应用侧错误消息(节选)Go 应用访问 GitHub API、第三方支付网关等外部域名时报:Get https://api.github.com: dial tcp: lookup api.github.com...on 10.96.0.10:53: read udp 10.244.3.57:57589->10.96.0.10:53: i/o timeout这类 dial tcp ... i/o timeout...内部服务解析失败(ServerFault 社区同类案例):http: proxy error: dial tcp: lookup kubernetes.default.svc on 10.96.0.10...DNS 本质上是 egress 到集群内的 kube-dns Service(UDP/TCP 53),若未放行,所有需要域名解析的出站流量都会失败。...GKE 官方排障:dial tcp: i/o timeout、no such host 的常见场景。 Red Hat 与 CNCF 的 egress 指南与最佳实践,强调 默认拒绝 后按需放行。

32800
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kubernetes Pod 里的 nslookupcurl 间歇性超时的故障排查复盘

    典型现象和错误截图如下:业务侧报错栈:http: proxy error: dial tcp: lookup kubernetes.default.svc on 10.96.0.10:53: read...这类报错常见于应用在访问 kubernetes.default.svc 或外网域名时由 DNS 延迟引发的超时,我使用 Google 在社区里发现了同款报错记录,链接如下:Kubernetes coredns...curl 间歇变慢甚至超时,社区有多处实证讨论:Kubernetes DNS lookup very slow, ndots:5这些现象混在一起时,很容易让人误以为是 CoreDNS 本身不稳定。...将相同循环脚本换到宿主机运行,失败概率显著降低,提示问题更偏向集群内部的 DNS 转发链路与配置。...语言栈层面的报错与可复用定位脚本为了让业务侧也能快速自证,我收集了几类常见调用栈与自检脚本:Go/容器工具链:dial tcp: lookup index.docker.io on 192.168.65.1

    51610

    Prometheus监控神器-服务发现篇(一)

    对于一组比较少的服务器的测试环境中,这种手动方式添加配置信息是最简单的方法。但是实际生产环境中,对于成百上千的节点组成的大型集群又或者Kubernetes这样的大型集群,很明显,手动方式捉襟见肘了。...,例如使用env标签标示当前节点所在的环境,这样从这些实例中采集到的样本信息将包含这些标签信息,从而可以通过该标签按照环境对数据进行统计。...在互联网架构中,我们使用主机节点或者Kubernetes集群通常是不对外暴露IP的,这就要求我们在一个内部局域网或者专用的网络中部署DNS服务器,使用DNS服务来完成内部网络中的域名解析工作。...Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: test1.example.com Address...: 192.168.1.221 # 验证 test2 DNS记录 nslookup test2.example.com Server: 127.0.0.53 Address: 127.0.0.53#53

    4.1K00

    Kubernetes 常见问题排查与解决方案!(纯干货)

    原因: CoreDNS 所在的宿主机上 /etc/resolv.conf 中存在有 127.0.xx 的 nameserver,这样会造成解析死循环。...原因: 宿主机上面跑的容器太多,导致 pod 无法在 3m 钟内完成生命周期检查 解决: PLEG(Pod Lifecycle Event Generator) 用于 kublet 同步 pod 生命周期...only_cpu_and_memory=true: dial tcp xxx.xxx.xxx.49:10255: connect: connection refused 原因: 现在的 K8s 都默认禁用了...only_cpu_and_memory=true: dial tcp: lookup K8s-node-234 on 10.96.0.10:53: no such host 解决: 使用 Kubelet-preferred-address-types...原因: 在 api-server 的启动参数 enable-admission 中设置了 PodSecrityPolicy, 但是集群中又没有任何的 podsecritypolicy,因此导致整个集群都无法新建出

    17.2K64

    4.最新实践基于Containerd安装部署高可用Kubernetes集群

    浏览器使用该字段验证网站是否合法 key:生成证书的算法 hosts:表示哪些主机名(域名)或者IP可以使用此csr申请的证书,为空或者""表示所有的都可以使用(本例中没有`"hosts": [""]`...【所有Master节点主机】查看各个master节点的etcd集群服务是否正常及其健康状态。..., 其它节点也是对应的IP地址, 或者直接 0.0.0.0 全地址监听这样也就不用修改了。...STATUS 处于 NotReady , 这是由于节点之间的POD无法通信还缺少网络插件,当我们安装好 kube-proxy 与 calico 就可以变成 Ready 状态了。...nameserver 127.0.0.53 这个dns地址导致coredns容器pod无法正常启动,并且在我们手动修改该 /etc/resolv.conf 后systemd-resolved.service

    4.5K20

    Kubernetes(k8s)概念学习、集群安装

    答:Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。...5)、难点是如何通过跨主机,还能通过对方的ip直接到达。...主机名,因为有多个kublet Node节点的时候,每个节点都需要给它贴上一个标签。...这样的话master节点在下命令的时候,可以找到指定的node。 14 # 可以使用ip地址进行区别,或者主机名称进行区分。主机名是需要做hosts解析的哦,不然找不到指定的地址的。...目的是因为现在有三台Node节点,Node节点会起容器,当大规模使用容器的时候,容器和容器之间是需要通讯的,此时需要实现Docker宿主机跨Docker宿主机容器之间的通讯,此时需要网络插件来让所有的宿主机之间容器之间可以通讯

    1.2K40

    搭建k8s高可用集群 - 二进制方式

    为了方便文件的copy,我们可以选择一个中转节点(随便一个节点),配置好跟其他所有节点的免密登录,这样在copy的时候就不需要反复输入密码了。...etcd ---- 部署api-server(master节点) 生成证书和私钥 第一步还是一样的,首先生成api-server的证书和私钥。...: 53 protocol: TCP - name: metrics port: 9153 protocol: TCP Tips:该文件是使用官方的deploy.sh脚本生成的... 80:8568/TCP 11m [root@m1 ~]# 在每个worker节点上尝试访问nginx-ds服务(master节点没有proxy所以不能访问Service... [root@n1 ~]# 在每个节点上检查NodePort的可用性,NodePort会将服务的端口与宿主机的端口做映射,正常情况下所有节点都可以通过

    2.2K20

    在centos7上安装和配置Kubernetes集群管理pods和services

    编辑Kubernetes API server的配置文件 确保下列行没有被注释,并为下列的值 复制 # vim /etc/kubernetes/apiserver ### # kubernetes system...查看节点信息(我们还没有配置节点信息,所以这里应该为空) 复制 # kubectl get nodes NAME LABELS STATUS 安装Kubernetes...编辑 kubernetes 配置文件 编辑/etc/kubernetes/config中kubernetes的默认配置,确保KUBE_MASTER的值是连接到Kubernetes master API...现在登陆kubernetes master节点验证minions的节点状态: 复制 # kubectl get nodes NAME LABELS...tcp 173.194.72.82:443: i/o timeout 手动ping了一下gcr.io发现无法ping通(可能是被墙了),从网上找到 pause:0.8.0 的镜像,然后再每个minion

    1.9K30

    ubuntu 16.04部署kubernetes集群【详细教程】

    作为一名新时代的运维工程师,不掌握k8s这样开阔时代的工具怎能成为一名好运维呢?最近两周在折腾k8s集群,发现很是不容易。各种概念,各种插件。...没有的话填写:http://${MASTER_IP}:2379 (MASTER_IP自行替换成自己的主节点ip)ETCD_ENDPOINTS=https://192.168.1.72:2379,https...节点需要提供给其他服务访问,就要验证其他服务的身份,所以需要一个标识自己监听服务的server证书,当有多个etcd节点的时候也需要client证书与etcd集群其他节点交互,当然也可以client和server...etcd-1 Unhealthy Get https://192.168.1.73:2379/health: dial tcp 192.168.1.73:2379: getsockopt...这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。

    2.9K20

    KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具

    Pod 各种疑难问题起不来 证书即将过期 Docker 服务异常 OutOfMemory 存储空间不足 ··· 这样的问题还有很多,并且这些隐性的集群异常问题对集群的控制面来说是不可见的,因此 Kubernetes...KubeEye 是什么 KubeEye 是一款开源的 Kubernetes 集群自动巡检工具,旨在自动检测发现 Kubernetes 上的各种问题,比如应用配置错误、集群组件不健康和节点问题,帮助集群管理员更好地管理集群降低风险...✅ PodSetTagNotSpecified 镜像地址没有声明标签或标签是最新 ✅ PodSetRunAsPrivileged 以特权模式运行 Pod 意味着 Pod 可以访问主机的资源和内核功能...设置主机 IP ✅ PodSetHostNetworkSet 设置主机网络 ✅ PodHostPIDSet 设置主机 PID ✅ PodMemoryRequestsMiss 没有声明内存资源请求值 ✅...:00 Get https://192.168.13.8:2379/health: dial tcp 192.168.13.8:2379: connect: connection refused

    3K10

    宜信容器云排错工具集

    宜信容器云是一套基于kubernetes的容器管理平台。业务线用户在容器云上部署应用程序时,常常会遇到容器无法启动或者应用程序运行不正常的情况。...比如: 1)没有可用的node供调度,如调度的节点资源不够; 2)健康状态检查失败; 3)拉取镜像失败,如下图: [1575442723473090533.png] events的基本实现如下图: [1575442730945071878...当查看web terminal时,前端web发起了一个websocket请求,到Api-server。再由所属节点的kubelet响应该Api-server的请求,并与容器运行时建立连接。...kubelet 和容器运行时建立连接后,kubelet返回请求,Api-server将请求升级为SPDY(SPDY允许在单个的TCP请求中复用独立的STDIN/STDOUT/STDERR),并将WS的流映射到...kubernetes集群的所有节点中,并挂载了宿主机的/var/docker/docker.sock,实现与docker daemon的通信。

    2.6K40
    领券