k8s集群内添加外部hostname解析
使用场景
- 用于在k8s内部集群下,让pod可以直接解析外部主机hostname
例子:
hbase部署在外部vm上,K8S集群pod网络下的jstorm拓扑需要访问客户的 hbase zk中获取到hbase node的地址,有时候hbase zk里面获取的地址是hbase主机的hostname,这时候k8s集群下pod是无法解析道这个hostname,会导致无法访问
操作步骤
- 首先确认需要访问的hostname 和对应的 IP地址
- 然后在k8s集群内创建 endpoints,service
例子
下面是对应使用的YAML,里面做的映射是 hostname-1 192.168.65.12 ,
可以根据不同环境修改对应 endpoints,service的 name 参数(为hostname),和endpoints的 ip参数(为hostname 映射的ip)
apiVersion: v1
kind: Endpoints
metadata:
name: hostname-1
subsets:
- addresses:
- ip: 192.168.65.12
ports:
- name: default
port: 42
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: hostname-1
spec:
clusterIP: None
ports:
- name: default
port: 42
protocol: TCP
targetPort: 42
type: ClusterIP
status:
loadBalancer: {}
测试
- 我们这样就为 192.168.65.12 主机映射的 hostname-1 域名解析,这样在k8s环境内直接访问 hostname-1 主机名就可以解析为 192.168.65.12 地址了

网友评论