the server is currently unable to handle the request (get nodes.metrics.k8s.io)

电玩女神 2021-12-04 08:37 1640阅读 0赞

在部署metrics server后,pod启动成功,但是使用kubectl top node命令时,显示报错:
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
多方查看后,发现在master节点上ping不同metrics server的podIP。两天的排错,才发现是使用calico网络bgp模式后,不同网段之间通信,pod不通
这里重新生成calico的ippool,使用calico网络的crosssubnet网络实现

  1. # 1、备份当前的ippool
  2. calicoctl get ippool -o yaml > pool_bak.yaml
  3. # 2、修改pool_bak.yaml
  4. #----在 natOutgoing: true后面添加一行,关闭该ippool
  5. disabled: true
  6. # 3、应用使生效
  7. calicoctl apply -f pool_bak.yaml
  8. # 4、查看ippool
  9. calicoctl get ippool -o wide
  10. # ***如下显示
  11. # --NAME CIDR NAT IPIPMODE DISABLED
  12. # default-ipv4-ippool 10.66.0.0/16 true Never true
  13. # ****
  14. # 5、删除旧的ippool
  15. calicoctl delete pool default-ipv4-ippool
  16. # 6、新建新的ippool
  17. calicoctl create -f -<<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: new-pool spec: cidr: 10.67.0.0/16 ipipMode: CrossSubnet natOutgoing: true EOF
  18. # 7、查看新的ippool
  19. # NAME CIDR NAT IPIPMODE DISABLED
  20. # new-pool 10.66.0.0/16 true CrossSubnet false

然后将metrics server等pods重新生成,就可以解决问题啦

BINGO
BINGO
BINGO
BINGO

发表评论

表情:
评论列表 (有 0 条评论,1640人围观)

还没有评论,来说两句吧...

相关阅读