首页 > 其他分享 >办公网络访问k8s集群内部ip和域名

办公网络访问k8s集群内部ip和域名

时间:2023-08-24 18:23:26浏览次数:38  
标签:0.0 ... 10.233 ip 18 域名 172.16 k8s

本地k8s集群pod和办公网互通并实现域名解析

背景

在微服务场景下,研发团队在进行开发联调测试过程中,需要连接到k8s集群的注册中心中等中间件并和集群内的其他业务服务pod互相通信。

网络基本情况

网络类型 ip段
办公网络 172.16.0.0/16
Pod网络 10.233.64.0/18
Service网络 10.233.0.0/18

实施方案

  • 添加一台主机,打上污点,禁止调度,专门用于路由转发
# 开启该主机的路由转发功能
[root@nfs bin]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 1
# 如果该值不为1则需修改
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# 生效,如需稳妥可以重启服务器
sysctl -p

# 查看node状态
[root@master ~]# kubectl describe node node4
Name:               node4
Roles:              worker
...
Taints:             <none>
Unschedulable:      false
...

# 打污点
kubectl taint nodes node4 node-role.kubernetes.io/master=:NoSchedule
# 再次查看node状态
[root@master ~]# kubectl describe node node4
Name:               node4
Roles:              worker
...
                    node.alpha.kubernetes.io/ttl: 0
                    projectcalico.org/IPv4Address: 172.16.50.146/23
                    projectcalico.org/IPv4IPIPTunnelAddr: 10.233.105.0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Wed, 23 Aug 2023 11:20:08 +0800
Taints:             node-role.kubernetes.io/master:NoSchedule
Unschedulable:      false
...

# node4配置iptables进行转发
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -d 10.233.64.0/18 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -d 10.233.0.0/18 -j MASQUERADE

# 检查是iptable链情况
[root@node4 bin]#  iptables -t nat -L -n --line-numbers | grep -A 10 "Chain POSTROUTING"
Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    cali-POSTROUTING  all  --  0.0.0.0/0            0.0.0.0/0            /* cali:O3lYWMrLQYEMJtB5 */
2    KUBE-POSTROUTING  all  --  0.0.0.0/0            0.0.0.0/0            /* kubernetes postrouting rules */
3    MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
4    MASQUERADE  all  --  172.16.0.0/16        10.233.64.0/18      
5    MASQUERADE  all  --  172.16.0.0/16        10.233.0.0/18  

# 如有错误可以删除
 iptables -t nat -D POSTROUTING 3
  • 三层交换机配置路由,将pod和service下一跳指向到node3节点
# 添加路由
sys
ip route-static 10.233.0.0 18 172.16.50.146
ip route-static 10.233.64.0 18 172.16.50.146

# 查看路由
display ip routing-table

...

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/0          Static  60  0           172.16.0.1      ...
0.0.0.0/32         Direct  0   0           127.0.0.1       ...
10.233.0.0/18      Static  60  0           172.16.50.146   ...  # pod路由
10.233.64.0/18     Static  60  0           172.16.50.146   ...  # service路由

# 保存配置
save

# 本地电脑测试连通性
xxxdeiMac:~ xxx$ ping 10.233.0.3
PING 10.233.0.3 (10.233.0.3): 56 data bytes
64 bytes from 10.233.0.3: icmp_seq=0 ttl=63 time=0.460 ms
64 bytes from 10.233.0.3: icmp_seq=1 ttl=63 time=0.481 ms
64 bytes from 10.233.0.3: icmp_seq=2 ttl=63 time=0.453 ms
64 bytes from 10.233.0.3: icmp_seq=3 ttl=63 time=0.464 ms
  • 集群内域名解析集群外使用

这里只需要拿到coredns的service IP,配置到个人电脑上即可以进行正常解析。如果公司内部有搭建dns服务器,可以直接将cluster.local forword到coredns service ip上,也能实现。

kubectl get svc coredns -n kube-system

NAME      TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
coredns   ClusterIP   10.233.0.3   <none>        53/UDP,53/TCP,9153/TCP   279d


# 测试解析
iMac:~ xxx$ dig A default-http-backend.kubesphere-controls-system.svc.cluster.local

; <<>> DiG 9.10.6 <<>> A default-http-backend.kubesphere-controls-system.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14176
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;default-http-backend.kubesphere-controls-system.svc.cluster.local. IN A

;; ANSWER SECTION:
default-http-backend.kubesphere-controls-system.svc.cluster.local. 30 IN A 10.233.21.176 # 此处可以看到,已经解析成功

;; Query time: 1 msec
;; SERVER: 10.233.0.3#53(10.233.0.3)
;; WHEN: Thu Aug 24 18:03:27 CST 2023
;; MSG SIZE  rcvd: 175

标签:0.0,...,10.233,ip,18,域名,172.16,k8s
From: https://www.cnblogs.com/qingfengfumian/p/17654875.html

相关文章

  • k8s 下安装 pxc
    https://artifacthub.io/packages/helm/percona/pxc-operator安装helmrepoaddperconahttps://percona.github.io/percona-helm-charts/helminstallperconapercona/pxc-operator--version1.13.0--namespacepercona--create-namespacehelminstallmy-dbpercona......
  • SpringBoot 实现 IP 地址解析
    1.离线解析在使用时需要将ip2region.xdb文件下载到工程文件目录下,使用ip2region即是完全基于xdb文件的查询,单次查询响应时间在十微秒级别,可通过如下两种方式开启内存加速查询:vIndex索引缓存:使用固定的512KiB的内存空间缓存vectorindex数据,减少一次IO磁盘操作,保持......
  • javascript实现大文件上传下载
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续......
  • HCIP_OpenStack总结部分
    目录第一章架构介绍1.OpenStack简介1.1OpenStack简述1.2OpenStack工作原理概述1.3开源OpenStack版本介绍1.4设计理念1.5OpenStack与云计算2.OpenStack架构2.1OpenStack架构简介3.OpenStack核心服务4.OpenStack服务交互第二章界面管理1.Horizon简介1.1简介1......
  • 有关elementuiplus popper 动画报错
     解决方法:局部解决:    ElementPlus的 ElDropdown 组件是基于Popper.js构建的,所以可以使用相同的方式来禁用 adaptive 选项。在 ElDropdown 组件中,你可以使用 popper-options 属性来指定Popper实例的选项。因此,要禁用 adaptive 选项,你可以将 popper-op......
  • Electron,VUEJS3,Vite,TypesSript 开发环境配置
    Electron,VUEJS3,Vite,TypesSript开发环境配置项目早期是vue3+vite开发的,后期由于运营需求,要修改为Win安装包。方案还是比较多的:1.WPF-Webview由于目前只需要兼容win,所以可以选择WPF,但WPF需要WebView的,还需要本地架设服务。整体部署比较复杂以及需要熟悉C#与WPF相关开发。2.......
  • JavaScript基础语法
    一、JavaScript概述1.1、JavaScript可以做什么1.1.1、页面的各种动画效果1.1.2、页面的点击/移入响应1.1.3、对客户端数据进行验证1.1.4、各种页面小游戏1.1.5、用途总结嵌入动态文本于HTML页面。对浏览器事件做出响应(对于用户的操作给予响应)。读写HTML元素。在......
  • Python——pip安装weditor失败
    前言python_version:3.11.4内容[email protected]:alibaba/web-editor.gitpipinstall-eweb-editor......
  • adocker yml如何操作才能让搭建的redis集群能通过外网访问ip+端口的集群所有信息
    要在Docker中操作以便通过外部网络访问Redis集群的IP和端口,您需要执行以下操作:首先,您需要创建一个DockerComposeYAML文件(docker-compose.yml),用于定义Redis集群的配置。在此文件中,您可以指定每个Redis节点的配置和网络设置。以下是一个示例配置:version:'3'services:redis1:......
  • typescript 数组根据指定字段去重
    this.listDataIn=data.Result.data;constuniqueItems:Item[]=Array.from(newSet(this.listDataIn.map(item=>item.MyLandID))).map(id=>{returnobj.listDataIn.find(item=>item.MyLandID===id);});......