service和deployment中的spec.selector

在 Kubernetes 中,ServiceDeploymentspec.selector 在使用上是有一些不同之处的,下面是对这两者的详细解释:

1. Deployment 中的 Selector

Deployment 中,spec.selector 是必需的,并且通常使用 matchLabels 来定义选择器。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image

在这个例子中,spec.selector.matchLabels.app 用于指定该 Deployment 应该管理哪些 Pods。它确保 Deployment 知道自己应该控制哪些 Pod 的生命周期。

2. Service 中的 Selector

而在 Service 中,spec.selector 可以直接使用键值对,不需要嵌套在 matchLabels 中。例如:

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080

在这个例子中,spec.selector.app 直接指定了要路由到的 Pods 的标签,这些 Pods 会根据 app: my-app 的标签进行选择。

总结

  • Deploymentspec.selector 使用 matchLabels 是为了更明确地定义选择器,便于扩展和复杂选择。
  • Servicespec.selector 则可以直接使用简单的键值对形式,这是因为 Service 的选择逻辑相对简单,主要关注于将流量导向特定标签的 Pods。

因此,你不需要在 Service 中使用 matchLabels,直接使用键值对即可。希望这个解释能帮助你理解 Kubernetes 中 ServiceDeployment 的选择器用法!

matchLabels和matchExpressions

在 Kubernetes 中,selector 除了使用 matchLabels 之外,还可以使用 matchExpressions。这两种方式可以结合使用,以提供更灵活的选择器功能。

1. matchLabels

matchLabels 是一种简单的选择器,它允许你通过精确匹配标签来选择 Pods。例如:

selector:
matchLabels:
app: my-app

这个选择器会选择所有具有标签 app=my-app 的 Pods。

2. matchExpressions

matchExpressions 提供了更复杂的选择逻辑,可以使用以下操作符:

  • In: 匹配指定的值列表中的任意一个。
  • NotIn: 不匹配指定的值列表。
  • Exists: 检查标签是否存在。
  • DoesNotExist: 检查标签是否不存在。
  • Gt: 大于某个数值(适用于数字类型的标签)。
  • Lt: 小于某个数值(适用于数字类型的标签)。

示例

下面是一个使用 matchExpressions 的示例:

selector:
matchExpressions:
- key: app
operator: In
values:
- my-app
- key: environment
operator: NotIn
values:
- dev

在这个例子中,选择器会选择所有具有标签 app=my-app 且不属于 environment=dev 的 Pods。

3. 组合使用

你可以同时使用 matchLabelsmatchExpressions 来构建复杂的选择条件,例如:

selector:
matchLabels:
app: my-app
matchExpressions:
- key: environment
operator: NotIn
values:
- dev

总结

  • matchLabels: 简单的键值对匹配。
  • matchExpressions: 更复杂的条件匹配,支持多种操作符。

这两者可以根据具体需求结合使用,使得 Kubernetes 的资源选择更加灵活和强大。希望这些信息对你有帮助!

k8s~service和deployment中的spec.selector的更多相关文章

  1. Deployment.spec.selector.matchLables实验解释

    原文:https://cloud.tencent.com/developer/article/1394657 Deployment.spec.selector.matchLables实验解释 作者: ...

  2. K8s Service原理介绍

    Service的工作方式有三种: 第一种: 是Userspace方式 如下图描述, Client Pod要访问Server Pod时,它先将请求发给本机内核空间中的service规则,由它再将请求, ...

  3. 使用nginx 正向代理暴露k8s service && pod ip 外部直接访问

    有时在我们的实际开发中我们希望直接访问k8s service 暴露的服务,以及pod的ip 解决方法,实际上很多 nodeport ingress port-forword 实际上我们还有一种方法:正 ...

  4. k8s service对象

    k8s service对象   概述 service服务也是Kubernetes里核心字眼对象之一,Kubernetes里的每一个service其实就是我们经常提起的微服务架构中的一个微服务,之前讲解 ...

  5. k8s service NodePort 方式向外发布

    k8s service NodePort 方式向外发布 k8s 无头service 方式向内发布 k8s service 服务发现 {ServiceName}.{Namespace}.svc.{Clu ...

  6. k8s service不能访问排错

    简介 对于新安装的 Kubernetes,经常出现的一个问题是 Service 没有正常工作.如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希 ...

  7. 对k8s service的一些理解

    服务service service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务 举个例子一个a服务运行3个pod,b服务怎么访问a服务的pod, ...

  8. k8s学习 - 概念 - Deployment

    k8s学习 - 概念 - Deployment 有了 ReplicaSet 还需要有 Deployment 的原因是希望有一个控制器能管理部署更新时候的版本控制问题.一个 Deployment 可以管 ...

  9. 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法

    目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...

  10. k8s Service学习

    service的概念 kubernetes service定义了一个抽象概念,一个pod的逻辑分组,一种可以访问的策略---通常称为服务.这组pod能够被service访问到,通常通过label se ...

随机推荐

  1. ASP.NET Core – Work with X509

    前言 这篇主要是说如何用 ASP.NET Core 读写系统里的证书 Store 和创建一个证书, 还有使用证书做加密, 解密, 签名. 主要参考: C#数字证书编程总结 (读写证书 Store) E ...

  2. ASP.NET Core Library – Nager.PublicSuffix

    前言 有个很简单的需求,想从 URL 里获取到 domain 不要 subdomain. abc.example.com -> example.com 没想到就这么简单的需求,超级难做.而且 . ...

  3. 邀请参与 2022 第三季度 Flutter 开发者调查

    自 Flutter 3 发布之后,我们在以移动端为中心到多平台框架的路线上稳步前行,用 Dart 2.17 的新语言特性帮助大家提升工作效率,并对核心工具进行了改进,让您在跨平台打造优秀体验时更加得心 ...

  4. 排查maven 冲突及解决方式

    Maven Maven 是一个以项目为中心的自动化构建工具,主要用于Java项目的管理和构建.它提供了一种统一的方式来描述项目的结构.依赖关系和构建过程,简化了项目的构建和管理. Maven 的主要特 ...

  5. Winrar 免广告、去评估版的解决办法 ( 实测有效 )

    事件起因: 在打开 Winrar 压缩软件的时候,总是会弹出广告弹窗,而且上面还是显示评估版本. 解决办法: 1. 正常安装 Winrar 软件 2. 安装破解软件--Restorator http: ...

  6. Unreal Engine4 GPU崩溃或3D设备丢失的解决方案

    起因: Unreal Engine4 在渲染时报错GPU崩溃或3D设备丢失 解决办法: regedit  打开注册表 在以下2个路径下 新建 DWORD(32-bit) Value 命名为  TdrD ...

  7. 利用 Page Visibility API 优化网页性能与用户体验

    在现代 Web 开发中,用户可能会频繁切换标签页,或让网页处于后台运行.为了避免不必要的资源浪费并提升用户体验,合理利用 Page Visibility API 可以在页面不可见时暂停或减少资源的消耗 ...

  8. WeiXin.Export.20211230

    C# 在PC上的通过蓝牙(bluetooth)发送数据到手机 将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以) .Net Core Http ...

  9. flops, params = profile(model, inputs=(x,))计算

    计算量:FLOPs,FLOP时指浮点运算次数,s是指秒,即每秒浮点运算次数的意思,考量一个网络模型的计算量的标准.参数量:Params,是指网络模型中需要训练的参数总数. flops(G) = flo ...

  10. 2021年10月国产数据库排行榜-墨天轮:达梦反超OceanBase夺榜眼,TDSQL实现“四连增”,数据生态加速建设

    2021年10月国产数据库排行榜已在墨天轮发布,本月共有150家数据库参与排名.我们可以用"半江瑟瑟半江红"来形容10月份数据库分数涨跌情况.除去分数没有变化的数据库,分数上涨和下 ...