kubernetes:选择器在服务与部署中的角色

kubernetes:选择器在服务与部署中的角色,kubernetes,kubernetes-service,kubernetes-deployment,Kubernetes,Kubernetes Service,Kubernetes Deployment,从Kubernetes文档站点关于使用mysql部署Wordpress应用程序: mysql的服务定义: apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None mysql的部

Kubernetes
文档站点关于使用mysql部署
Wordpress
应用程序:

mysql
的服务定义:

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None
mysql的部署定义

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
我的问题如下:

部署
定义有一个
匹配标签
选择器
,因此它将匹配下面定义的pod,该pod具有
app:wordpress
层:mysql
标签


为什么
服务
选择器
不需要
匹配标签
指令来达到相同的目的?执行服务的“选择”是什么?

服务是一个概念,它使您的容器(在本例中承载wordpress)在给定的端口上可用。它将外部端口(节点的
端口)映射到内部端口(容器/吊舱的端口)。它通过使用
Pod的
网络功能来实现这一点。选择器是在服务中指定端口应在哪个
Pod
上打开的一种方式。
Deployment
实际上只是一种将事物组合在一起的方式,
Pod
本身包含Wordpress容器,服务中定义的端口可通过
Pod
网络使用


这是一个简单的解释,有不同种类的服务。

服务是一个概念,它使您的容器(在本例中承载wordpress)在给定的端口上可用。它将外部端口(节点的端口)映射到内部端口(容器/吊舱的端口)。它通过使用
Pod的
网络功能来实现这一点。选择器是在服务中指定端口应在哪个
Pod
上打开的一种方式。
Deployment
实际上只是一种将事物组合在一起的方式,
Pod
本身包含Wordpress容器,服务中定义的端口可通过
Pod
网络使用


这是一个简单的解释,有不同种类的服务。

根据上的K8S文档

API目前支持两种类型的选择器:基于相等的选择器和基于集合的选择器

较新的资源(如作业、部署、副本集和守护程序集)也支持基于集合的需求


看起来新资源(如部署)支持更具特色的基于集合的(带有匹配标签)和旧资源(如服务)遵循旧的基于平等的(没有匹配标签)。

根据上的K8S文档

API目前支持两种类型的选择器:基于相等的选择器和基于集合的选择器

较新的资源(如作业、部署、副本集和守护程序集)也支持基于集合的需求


看起来新的资源(如部署)支持更具特色的基于集合的(带有匹配标签)和旧的资源(如服务)遵循旧的基于平等的(没有匹配标签)。

顺便说一句,了解这一点的最好方法就是建立一个集群,并使用kubectl命令来执行诸如描述吊舱、描述服务之类的操作。并使用telnet或openssl来确认您的服务公开的开放端口。顺便说一句,了解这一点的最佳方法就是建立一个集群,并使用kubectl命令来执行描述POD、描述服务等操作。并使用telnet或openssl确认服务公开的开放端口。