解决公网下,k8s calico master节点无法访问node节点创建的pod

这篇具有很好参考价值的文章主要介绍了解决公网下,k8s calico master节点无法访问node节点创建的pod。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目的:解决pod部署成功后,只能在node节点访问,而master节点无法访问

原因:集群搭建时,没有配置公网进行kubectl操作,从而导致系统默认node节点,使用内网IP加入k8s集群!如下:

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

解决方案:围绕公网IP进行搭建即可,其实就是在传统的搭建步骤下,给master节点和node节点添加下公网网卡就可以了


1、机器IP清单

  • 我的两台服务器的都是云服务器
  • 我的master节点IP为111.230开头的
  • 我只有一个node节点,IP为192.168.9.96(该IP与calico网段冲突)

2、重置master节点的kubeadm

kubeadm reset

3、在master节点上创建公网的虚拟网卡

  • 看一下你的公网IP是否在机器中存在
ip a | grep 你的公网IP
  • 如果没有就执行下面这段代码新增一个和公网IP一样的虚拟网卡IP 
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=111.230.19.178  #这里是你的公网IP
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
  • 重置网络
systemctl restart network 

重置失败就直接去重启电脑就可以了 

4、初始化master主节点

  • 注意pod的网络范围为172.17.0.0/16,因为我有一台机器是192.168开头的
kubeadm init \
--apiserver-advertise-address=111.230.19.178 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=172.17.0.0/16

初始化成功后的日志:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
    --discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c \
    --control-plane

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
    --discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c

 

5、修改calico.yaml中的网段

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

搜索:192.168

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

取消注释,并修改网段:

  • 与步骤3中的pod-network-cidr保持一致

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

6、kubectl应用calico

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

7、重置node节点

kubeadm reset

8、在node节点上创建公网的虚拟网卡

  • 看一下你的公网IP是否在机器中存在
ip a | grep 你的公网IP
  • 如果没有就执行下面这段代码新增一个和公网IP一样的虚拟网卡IP 
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=139.159.228.xx  #这里是你的公网IP
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
  • 重置网络
systemctl restart network 

重置失败就直接去重启电脑就可以了 

9、去node节点重新加入到k8s集群

  • 这里一点要把行前的空格去掉!

kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
--discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

使用docker ps查看正在运行的容器:

发现node节点的calico正常运行了:

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

10、在主节点检查pod信息

在master节点执行:

kubectl get pod -A -owide

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器

  • node节点上的pod已经全部变为外网IP了,master节点也能正常访问node节点上的pod

11、验证

验证master节点是否能正常访问node节点

直接在步骤10中,找一个node上的pod访问即可,如(上面如标框框的一个):

kubectl logs calico-node-rs4hj -n kube-system

k8s master节点不能访问服务,云原生,kubernetes学习,kubernetes,网络,服务器文章来源地址https://www.toymoban.com/news/detail-769270.html

到了这里,关于解决公网下,k8s calico master节点无法访问node节点创建的pod的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s集群删除master节点

    1.在另外的master节点执行以下命令 kubectl get node      #查看需要删除的节点名称 kubectl delete node k8s-master01  #删除名为k8s-master01的节点 2.在k8s-master01清空集群配置信息 kubeadm reset  --cri-socket=unix:///var/run/cri-dockerd.sock  #因为我使用的是1.26.0版本的k8s所以需要指定cri rm -rf /var/lib/

    2024年02月13日
    浏览(45)
  • k8s添加node节点和master节点

    版本: kubelet:v1.20.4 docker: 20.10.23 资源: cpu:8 mem:16 kernel:3.10.0-1160.71.1.el7.x86_64 镜像仓库地址: registry.cn-hangzhou.aliyuncs.com/google_containers/ 2.1)关闭防火墙 2.2)关闭selinux 3)修改内核和加载所需要的内核 2.3)准备yum源 3.1)刷新缓存安装kubeadm、kubectl、kubelet、docker-ce 3.2)设置syste

    2023年04月16日
    浏览(51)
  • 虚拟机挂起/重启后导致K8s网络不通或服务启动后主节点无法访问问题

    3台linux服务器搭建的一个 kubeadm-k8s 的集群环境,(1 Master 2 Worker),  当断电或者虚拟机挂起恢复后出现 service 访问不了,pod之间ping不通或者集群搭建失败问题,但是K8s集群还是正常可以创建 deployment 以及调度 pod 到各个 node 上, 并且 node都处于 ready 的状态。 找到其中的 kube

    2024年02月08日
    浏览(58)
  • 【大数据】kubernetes(k8s)calico跨节点网络不通的问题及排错过程

    进入节点 k8s-node27 的pod,ping k8s-node28 节点上的pod的ip都不通,k8s-node28 节点ping k8s-node27 也不通,但是k8s-node27,k8s-node28 之间他们各自节点上的pod的ip之间是可以相互ping通。 排查过程: 这种情况让我们想起了当时设置路由转发时候的配置,主机上有多个网卡,而k8s的calico网络

    2024年02月11日
    浏览(55)
  • k8s单节点部署(仅master)

    1.脚本部署 默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成: 2.部署dashboard Dashboard是官方提供的一个UI,可用于基本管理K8s资源。 1、YAML下载地址: https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recom

    2024年02月07日
    浏览(44)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(69)
  • k8s其他master节点加入集群命令

      kubeadm join 192.168.0.236:16443 --token 7t2weq.bjbawausm0jaxury         --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195         --control-plane --certificate-key a01487c705d04e23832dafee30b06e9ef2ed9d946e9c5c1e869d915da043b640

    2024年01月18日
    浏览(48)
  • k8s master节点高可用方案部署

    使用的是堆叠方案,即etcd与控制平面被部署在同一节点当中,之所以最少使用三个master节点是因为ETCD的RAFT算法,集群中节点超过半数可用,集群才可用,所以一般使用奇数master节点,比如3、5等 每台机器都做 至少2cpu,4g机器环境 关闭防火墙、关闭selinux、关闭交换分区 (1)

    2023年04月08日
    浏览(45)
  • K8s集群重启与恢复-Master节点启停

    1 应用场景 场景 :在实际工作中,可能某个 Master 节点需要维护,迁移,我们需要平滑的停止、启动该节点,尽量减少启停中对集群造成的影响 注意 : 为了确保 K8s 集群能够安全恢复,请在操作前对 K8s 数据进行备份 为了确保重启 Master 节点期间 K8s 集群能够使用,集群中

    2023年04月08日
    浏览(46)
  • K8S集群搭建(多master多node节点)

    目录           一 部署环境 关闭防火墙 设置主机名hostname,管理节点设置主机名为 master  配置hosts主机名解析 配置免密登陆 关闭交换分区 配置内核参数,将桥接的IPv4流量传递到iptables的链 开启ipvs 二 配置软件源 升级centos系统内核 配置时间同步 安装docker服务以及K8S  查

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包