当前位置: 首页 > news >正文

k8s集群中service的域名解析、pod的域名解析

前言

在k8s集群中,service和pod都可以通过域名的形式进行相互通信,换句话说,在k8s集群内,通过service和pod的域名,可以直接访问内部应用,不必在通过service ip地址进行通信,一般的,我们创建service的时候不建议指定service的clusterIP,而是让k8s自动为service分配一个clusterIP,这样,service的IP是自动分配,但是service名字总是固定的吧,这样在集群内部就可以直接通过service的域名来连接即可,如前端pod应用直接通过service域名来连接后端pod。

service的域名

完整的service域名解析是:..svc. 其中,servicename为service名称,namespace为service所处的命名空间,clusterdomain是k8s集群设计的域名后缀,默认为cluster.local。
一般的,在生产环境中,我们可以直接简写为.即可,后面的部分保持默认即可。如果pod与svc是在同一个命名空间,那么直接写svc即可,如 。

演示示例

下面,我们通过创建一个deployment和service,然后创建一个测试pod,在测试pod中通过访问service域名的形式访问应用,验证service域名是否正常。如下所示

# 创建一个deployment,有3个副本
cat > deployment-nginx.yaml << EOF     
apiVersion: apps/v1
kind: Deployment
metadata:labels:env: devtiar: frontname: deployment-nginxnamespace: default
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.7.9imagePullPolicy: IfNotPresentname: nginx-containerports:- containerPort: 80name: httpprotocol: TCPrestartPolicy: Always
EOF
#创建一个service,用于反向代理上面创建的deployment的pod
cat > svc-deployment-nginx.yaml << EOF
apiVersion: v1
kind: Service
metadata:labels:app: nginxname: svc-deployment-nginxnamespace: default
spec:ports:- name: nginx-portnodePort: 30080port: 80protocol: TCPtargetPort: httpselector:app: nginxtype: NodePort
EOF
kubectl apply -f svc-deployment-nginx.yaml
kubectl apply -f deployment-nginx.yaml 

在pod中测试直接访问service的域名

# 在测试pod中直接访问service的域名
[root@master service]# kubectl exec -it pod-command -- /bin/sh #进入到测试pod中
/ # wget http://svc-deployment-nginx.default.svc.cluster.local:80		
#这个pod没有curl命令,所以通过wget命令下载
Connecting to svc-deployment-nginx.default.svc.cluster.local:80 (10.111.193.190:80)		#下载成功
saving to 'index.html'
index.html           100% |*******************************************************************************************************************************************************************************************|   612  0:00:00 ETA
'index.html' saved/ # cat index.html 	#下载成功,这是nginx的index文件,说明通过service域名访问是正常的
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
/ # wget http://svc-deployment-nginx.default.svc.cluster.local:80		#完整的写法
wget http://svc-deployment-nginx.default:80			#带命名空间写法
wget http://svc-deployment-nginx:80					#如果pod与svc在同一个命名空间,可以将命名空间省略不写
http://www.lryc.cn/news/135642.html

相关文章:

  • Shell 编程快速入门 之 数学计算和函数基础
  • 学习php中如何获取pdf文件中的文本内容
  • 分布式数据库架构:高可用、高性能的数据存储
  • Python工具箱系列(四十)
  • 【Hibench 】完成 HDP-Spark 性能测试
  • 【C++奇遇记】内存模型
  • Debootstrap 教程
  • MySQL之InnoDB引擎
  • API自动化管理: 从繁琐到轻松
  • Databend 开源周报第 107 期
  • 计算机网络参考模型
  • 【React基础全篇】
  • 如何使用 Vue.js 侦听嵌套数据?
  • Spring AOP详解
  • linux iptables安全技术与防火墙
  • TCP性能机制
  • qt信号槽同步问题
  • 七夕特惠-8折抢购,从速
  • [NLP]LLM--transformer模型的参数量
  • 5 Python的面向对象编程
  • 卷积神经网络——上篇【深度学习】【PyTorch】【d2l】
  • 【从零学习python 】54. 内存中写入数据
  • 速通蓝桥杯嵌入式省一教程:(九)AT24C02芯片(E2PROM存储器)读写操作与I2C协议
  • 负载均衡:优化性能与可靠性的关键
  • T113-S3-TCA6424-gpio扩展芯片调试
  • 奥威BI数据可视化工具:个性化定制,打造独特大屏
  • 13 秒插入 30 万条数据,批量插入!
  • Nginx代理转发地址不正确问题
  • HyperMotion高度自动化云迁移至华为HCS8.1解决方案
  • pbootcms系统安全防护设置大全