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

验证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

相关文章:

  • kafka的零拷贝技术
  • 【大疆dji】ESDK开发环境搭建(软件准备篇)
  • LangChain框架-检索器详解
  • swagger的简介及使用方法
  • 文字的力量
  • 2021-11-10 C++蜗牛爬井进3退1求天数
  • MySql 三大日志(redolog、undolog、binlog)详解
  • 交换机与路由器的主要区别:深入分析其工作原理与应用场景
  • Ubuntu开启自启动PostgreSQL读取HDD失败处理思路
  • springboot快速入门----教程
  • 在RK3588上使用SRS流媒体服务器
  • 精益数据分析(6/126):深入理解精益分析的核心要点
  • 【java实现+4种变体完整例子】排序算法中【快速排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • MATLAB 控制系统设计与仿真 - 41
  • 整合SSM——(SpringMVC+Spring+Mybatis)
  • 蓝桥杯 蜗牛 动态规划
  • 面向对象程序设计(双语)|| 实验六:文件(Java版)
  • FFmpeg+Nginx+VLC打造M3U8直播
  • Win 11 重装 Ubuntu 双系统方法
  • 基于Fabric.js的选座布局系统开发笔记
  • 马上评丨冒名顶替上中专,为何一瞒就是30多年?
  • 载人登月总体进展顺利
  • 上海与丰田汽车签署战略合作协议,雷克萨斯纯电动汽车项目落子金山
  • 周继红当选中国泳协主席,曾为国摘得首枚奥运跳水金牌
  • 中纪委驻中组部纪检监察组原组长李刚被捕
  • 北京理工大学解除宫某聘用关系,该教授此前被指骚扰猥亵学生