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

验证Kubernetes的服务发现机制

验证Kubernetes的服务发现机制

文章目录

  • 验证Kubernetes的服务发现机制
    • @[toc]
    • 一、验证基于环境变量的服务发现机制

服务发现是让客户端能够以固定的方式获取到后端Pod访问地址的机制。下面验证环境变量和DNS这两种机制。

一、验证基于环境变量的服务发现机制

对于需要访问服务的Pod,必须在该Pod创建之前创建Service。

(1)创建Service。

[root@master ~]# vim nginx-deploy-service.yaml
[root@master ~]# cat nginx-deploy-service.yaml 
apiVersion: apps/v1                		# 版本号
kind: Deployment                    	# 类型为Deployment
metadata:                            	# 元数据name: nginx-deploy          labels:                             	# 标签app: nginx-deploy
spec:                                 	# 详细信息replicas: 2                        	# 副本数量selector:                          	# 选择器,指定该控制器管理哪些PodmatchLabels:                     	# 匹配规则app: nginx-podtemplate:                          	# 定义模板,当副本数量不足时会根据模板定义创建Pod副本metadata:labels:app: nginx-pod                  # Pod的标签spec:containers:                     	# 容器列表(本例仅定义一个容器)- name: nginx                   	# 容器的名称image: nginx:1.14.2          	# 容器所用的镜像ports:- name: nginx-portcontainerPort: 80         	# 容器需要暴露的端口---
apiVersion: v1
kind: Service
metadata:name: nginx-svc      					#设置service的显示名字
spec:ports:- port: 8080              			#让集群知道service绑定的端口targetPort: 80           			#目标Pod的端口selector:app: nginx-pod  					#指定pod的标签[root@master ~]# 

(2)执行一次性创建Deployment和Service

[root@master ~]# kubectl apply -f nginx-deploy-service.yaml 
deployment.apps/nginx-deploy created
service/nginx-svc created
[root@master ~]# 

(3)基于镜像创建一个Pod

[root@master ~]# kubectl run nginx --image=nginx:1.14.2
pod/nginx created
[root@master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx                           1/1     Running   0          3s
nginx-deploy-59c566bbbb-cm4bz   1/1     Running   0          17m
nginx-deploy-59c566bbbb-n7qsz   1/1     Running   0          17m

(4)执行以下命令列出该Pod的环境变量,并筛选出含NGINX的环境变量

[root@master ~]# kubectl exec nginx -- printenv | grep NGINX
NGINX_SVC_PORT_8080_TCP=tcp://10.108.118.39:8080
NGINX_SVC_SERVICE_PORT=8080
NGINX_SVC_PORT_8080_TCP_PROTO=tcp
NGINX_SVC_SERVICE_HOST=10.108.118.39
NGINX_SVC_PORT=tcp://10.108.118.39:8080
NGINX_SVC_PORT_8080_TCP_PORT=8080
NGINX_SVC_PORT_8080_TCP_ADDR=10.108.118.39
NGINX_VERSION=1.14.2-1~stretch
[root@master ~]# 

此pod的环境变量中就包含以上Service的主机地址和端口,可以引用这些环境变量来访问Service

(5)删除该pod

[root@master ~]# kubectl delete po nginx
pod "nginx" deleted
[root@master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-59c566bbbb-cm4bz   1/1     Running   0          19m
nginx-deploy-59c566bbbb-n7qsz   1/1     Running   0          19m
[root@master ~]# 

(6)创建测试用的名称空间

[root@master ~]# kubectl create namespace test-ns
namespace/test-ns created
[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   26d
kube-node-lease   Active   26d
kube-public       Active   26d
kube-system       Active   26d
test-ns           Active   3s

(7)创建一个属于test-ns名称空间的pod

[root@master ~]# kubectl run nginx --image=nginx:1.14.2 -n test-ns
pod/nginx created

(8)查看名称空间test-ns中名称为nginx的pod相关环境变量

[root@master ~]# kubectl exec nginx -n test-ns -- printenv | grep NGINX
NGINX_VERSION=1.14.2-1~stretch

可以发现没有与Service相关的环境变量,这是因为该pod与该service分属不同的名称空间,该service属于默认的名称空间,彼此隔离,无法访问

(9)删除新创建的pod

[root@master ~]# kubectl delete pod nginx -n test-ns
pod "nginx" deleted
[root@master ~]# kubectl get pod  -n test-ns
No resources found in test-ns namespace.
[root@master ~]# kubectl delete -f nginx-deploy-service.yaml 
deployment.apps "nginx-deploy" deleted
service "nginx-svc" deleted

http://www.xdnf.cn/news/474.html

相关文章:

  • 【信息系统项目管理师】高分论文:论信息系统项目的干系人管理(ERP运营管理系统)
  • 大模型如何重塑未来:从技术突破到商业应用
  • leetcode0113. 路径总和 II - medium
  • Linux系统:详解进程等待wait与waitpid解决僵尸进程
  • cJSON_Print 和 cJSON_PrintUnformatted的区别
  • MinnowBoard MAX单板UEFI BIOS代码编译教程
  • 使用AOP完成添加日志
  • 【AI提示词】IT专家顾问
  • 文件上传及验证绕过漏洞
  • Delphi 常用关键字收录
  • 基础智能体的进展与挑战第 6 章【情绪建模】
  • Python遥感开发之Hurst指数的实现
  • Zookeeper的典型应用场景?
  • Keil MDK中禁用半主机(No Semihosting)
  • 齐次坐标变换+Unity矩阵变换
  • 【Tauri2】026——Tauri+Webassembly
  • 代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南
  • vue3 watch和watchEffect 的用法和区别
  • 计算机视觉算法实现——智能座椅坐姿识别
  • 基于GRPO将QWEN训练为和deepseek一样的推理模型!
  • linux kernel irq相关函数详解
  • 国产的 Java Solon v3.2.0 发布(央企信创的优选)
  • Day10【基于encoder- decoder架构实现新闻文本摘要的提取】
  • 第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
  • 从0开发一个unibest+vue3项目,使用vscode编辑器开发,总结vue2升vue3项目开始,小白前期遇到的问题
  • Flask应用部署通用指南
  • [Windows] Wireshark 网络抓包工具 v4.4.6
  • 【MATLAB海洋专题】历史汇总
  • C++学习之路,从0到精通的征途:vector类的模拟实现
  • 算法期末复习