首页 > 其他分享 >[kubernetes]Calico运行异常:dial tcp 10.96.0.1:443: connect: connection refused

[kubernetes]Calico运行异常:dial tcp 10.96.0.1:443: connect: connection refused

时间:2023-03-14 17:58:58浏览次数:44  
标签:dial kubernetes service 0.1 10.96 go kube port

[kubernetes]Calico运行异常:dial tcp 10.96.0.1:443: connect: connection refused

dingpwen

于 2022-04-27 10:33:12 发布

5309
收藏
分类专栏: 云原生 web开发 文章标签: kubernetes Calico
版权

华为云开发者联盟
该内容已被华为云开发者联盟社区收录
加入社区

云原生
同时被 2 个专栏收录
5 篇文章0 订阅
订阅专栏

web开发
7 篇文章0 订阅
订阅专栏
安装calico网络插件之后,发现相关pod一直不能进入Ready状态,查看log,出现如下问题:

Hit error connecting to datastore - retry error=Get “https://10.96.0.1:443/api/v1/nodes/foo”: dial tcp 10.96.0.1:443: connect: connection refused

网上查资料都说是什么iptables配置的问题,各种尝试,发现完全不对。于是打算从根源了解这个东西。

那么这个10.96.0.1到底是什么呢?原来

在 kubernetes,可以从集群外部和内部两种方式访问 kubernetes API,在集群外直接访问 apiserver 提供的 API,在集群内即 pod 中可以通过访问 service 为 kubernetes 的 ClusterIP。kubernetes 集群在初始化完成后就会创建一个 kubernetes service,该 service 是 kube-apiserver 创建并进行维护的,如下所示:

[root@master1 dingpwen]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d20h

1
2
3
4
内置的 kubernetes service 无法删除,其 ClusterIP 为通过 --service-cluster-ip-range 参数指定的 ip 段中的首个 ip,kubernetes endpoints 中的 ip 以及 port 可以通过 --advertise-address 和 --secure-port 启动参数来指定。

那么我们Node上的pod又如何才能访问到这个服务呢?毕竟相对于master机器,Node机器通过ip访问相当于“外网”。

其实我们查看kube-proxy的代码就会发现

I0427 01:46:24.595581 1 config.go:233] "Calling handler.OnEndpointSlicesSynced()"
I0427 01:46:24.595902 1 service.go:419] "Adding new service port" portName="default/kubernetes:https" servicePort="10.96.0.1:443/TCP"
I0427 01:46:24.595983 1 service.go:419] "Adding new service port" portName="kube-system/kube-dns:dns" servicePort="10.96.0.10:53/UDP"
I0427 01:46:24.596036 1 service.go:419] "Adding new service port" portName="kube-system/kube-dns:dns-tcp" servicePort="10.96.0.10:53/TCP"
I0427 01:46:24.596047 1 service.go:419] "Adding new service port" portName="kube-system/kube-dns:metrics" servicePort="10.96.0.10:9153/TCP"
I0427 01:46:24.596056 1 service.go:419] "Adding new service port" portName="kubernetes-dashboard/dashboard-metrics-scraper" servicePort="10.101.210.188:8000/TCP"
I0427 01:46:24.596065 1 service.go:419] "Adding new service port" portName="kubernetes-dashboard/kubernetes-dashboard" servicePort="10.98.70.204:443/TCP"
I0427 01:46:24.596276 1 endpointslicecache.go:358] "Setting endpoints for service port name" portName="kubernetes-dashboard/kubernetes-dashboard" endpoints=[10.244.137.69:8443]
I0427 01:46:24.596305 1 endpointslicecache.go:358] "Setting endpoints for service port name" portName="default/kubernetes:https" endpoints=[192.168.106.131:6443]
I0427 01:46:24.596315 1 endpointslicecache.go:358] "Setting endpoints for service port name" portName="kube-system/kube-dns:dns" endpoints=[10.244.104.2:53]
I0427 01:46:24.596321 1 endpointslicecache.go:358] "Setting endpoints for service port name" portName="kube-system/kube-dns:dns-tcp" endpoints=[10.244.104.2:53]
I0427 01:46:24.596329 1 endpointslicecache.go:358] "Setting endpoints for service port name" portName="kube-system/kube-dns:metrics" endpoints=[10.244.104.2:9153]


kube-proxy会把portName=“default/kubernetes:https” servicePort=“10.96.0.1:443/TCP” 注册到本服务中,那么Node端就可以通过kube-proxy来访问10.96.0.1:443这个服务。

所以出现标题所示问题,根源在该机器没有运行kube-proxy,或者kube-proxy运行异常。
————————————————
版权声明:本文为CSDN博主「dingpwen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dingpwen/article/details/124444614

标签:dial,kubernetes,service,0.1,10.96,go,kube,port
From: https://www.cnblogs.com/gaoyuechen/p/17215753.html

相关文章

  • 高可用的kubernetes集群安装
    一、架构设计二、集群规划 IP集群角色描述110.10.0.115keepalived虚拟IP虚拟IP,对10.10.0.15、10.10.0.29做keepalived110.10.0.15master、......
  • 最新HCL AppScan Standard 10.1.028223 安装及 许可证注册
    最新HCLAppScanStandard10.1.028223安装及许可证注册参考原文:《最新HCLAppScanStandard10.1.028223》1、软件介绍1.1、旧版界面1.2、新版本界面1.3:介绍HCLAppS......
  • vue el-dialog 模态框拖拽
    一、el-dialog拖拽效果展示二、代码实现1.在utils目录写两个文件drag.js和directive.jsdrag.js拖拽元素js代码directive.js注册vue的自定义指令drag.js拖拽......
  • Kubecost - Kubernetes 开支监控和管理
    ......
  • kubernetes集成GPU原理
    这里以NvidiaGPU设备如何在Kubernetes中管理调度为例研究,工作流程分为以下两个方面:如何在容器中使用GPUKubernetes如何调度GPU容器中使用GPU想要在容器中的应用可......
  • Kubernetes概述
    Kubernetes概述Kubernetes简介      Kubernetes是Google2014年创建的一款开源的容器编排管理工具,是Google10多年大规模容器管理技术Borg的开源版本。它是容器集群......
  • 基于Kubernetes(k8s)部署Dubbo+Nacos服务
    一、说明本文介绍基于Kubernetes(k8s)环境集成阿里云私有镜像仓库来部署一套Dubbo+Nacos的微服务系统,并使用KubernetesDNS以及port-forward的方式来打通网络......
  • Kubernetes 之 CRI、CNI、CSI
    Kubernetes作为云原生应用的的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑:CRI(Conta......
  • Kubernetes 核心概念与架构介绍
    masterapiserver:是k8scluster的前端接口,提供restfulapi各种客户端工具以及k8s其他组件可以通过它管理cluster中的各种资源Scheduler:负责决定将pod放在哪个no......
  • Rancher 管理 Kubernetes 集群
    一、Rancher简介Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字......