百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux 理解K8S Deployment配置的详细解释输出

ahcoder 2025-03-02 15:59 19 浏览

第一个是HAP我这个是HPA组合deployment

第一HPA


apiVersion: autoscaling/v2 # 指定使用的Kubernetes Autoscaling API版本为autoscaling/v2
kind: HorizontalPodAutoscaler # 表示这是一个HorizontalPodAutoscaler对象,用于自动调整Pod的副本数
metadata:
  name: sprint-lex-hap-memroy-cpu-hpa # 定义HPA的名称为sprint-lex-hap-memroy-cpu-hpa
  namespace: teamsnamespace # 指定HPA所属的命名空间为teamsnamespace
spec:
  minReplicas: 1 # HPA允许的最小副本数为1
  maxReplicas: 4 # HPA允许的最大副本数为4
  metrics:
  - type: Resource # 指定指标类型为资源指标
    resource:
      name: cpu # 资源指标的名称为CPU
      target:
        type: Utilization # 指定目标类型为利用率
        averageUtilization: 750 # 目标平均CPU利用率为750%
  - type: Resource # 指定指标类型为资源指标
    resource:
      name: memory # 资源指标的名称为内存
      target:
        type: Utilization # 指定目标类型为利用率
        averageUtilization: 50 # 目标平均内存利用率为50%
  scaleTargetRef:
    apiVersion: apps/v1 # 目标对象的API版本为apps/v1
    kind: Deployment # 目标对象的类型为Deployment
    name: sprint-lex-hap-memroy-cpu # 目标对象的名称为sprint-lex-hap-memroy-cpu

第二deployment


kind: Deployment # 表示这是一个Deployment对象,用于定义应用程序的部署
metadata:
  namespace: teamsnamespace # 指定部署所在的命名空间为teamsnamespace
  name: sprint-lex-hap-memroy-cpu # 指定部署的名称为sprint-lex-hap-memroy-cpu
  labels:
    194f867a2: enabled # 定义部署的标签,标签名为194f867a2,值为enabled
    app: nginx # 定义部署的应用标签,标签名为app,值为nginx
    type: pa # 定义部署的类型标签,标签名为type,值为pa
spec:
  replicas: 2 # 定义部署的副本数为2,即同时运行的Pod实例数量为2
  selector: # 定义标签选择器,用于选择要管理的Pod
    matchLabels:
      194f867a2: enabled # 标签选择器的条件,要求Pod的标签中必须包含194f867a2=enabled
      team: lex # 标签选择器的条件,要求Pod的标签中必须包含team=lex
  template: # 定义创建Pod的模板
    metadata:
      labels:
        194f867a2: enabled # Pod的标签,标签名为194f867a2,值为enabled
        app: nginx # Pod的标签,标签名为app,值为nginx
        type: pa # Pod的标签,标签名为type,值为pa
        team: lex # Pod的标签,标签名为team,值为lex
    spec: # 定义Pod的规范
      serviceAccountName: lex-teamsnamespace-sa # 指定Pod使用的Service Account名称为lex-teamsnamespace-sa
      automountServiceAccountToken: false # 禁用自动挂载Service Account Token
      imagePullSecrets: # 定义从私有容器镜像仓库拉取镜像所需的认证信息
      - name: sprint # 私有镜像仓库的认证信息名称为sprint
      containers: # 定义Pod中的容器
      - image: eu.gcr.io/company/lex-api-podsdata-collector:1.0.1 # 容器的镜像地址
        env: # 定义容器的环境变量
        #- name: https_proxy
        #  value: "192.168.192.51:443"
        imagePullPolicy: Always # 定义容器镜像拉取策略为始终拉取
        name: docker-container-hello-node # 容器的名称为docker-container-hello-node
        resources: # 定义容器的资源限制和请求
          requests: # 定义容器的资源请求
            memory: "900Mi" # 定义内存请求为900Mi
            cpu: "200m" # 定义CPU请求为200m
            ephemeral-storage: "2Gi" # 定义临时存

# summary

如何理解deployment的一些字段

- deployment name

```
[lex-mac]$ kubectl get deployment -n lex-namespace|grep lex
mac-lex-hap-memroy-cpu 1/1 1 1 38d
[lex-mac]$ kubectl rollout restart deployment/mac-lex-hap-memroy-cpu -n lex-namespace
deployment.apps/mac-lex-hap-memroy-cpu restarted
```

- get rs replicaSets

```
[lex-mac]$ kubectl get rs -n lex-namespace|grep lex
mac-lex-hap-memroy-cpu-5bbdd6dd55 0 0 0 12m
mac-lex-hap-memroy-cpu-6f89c6b56c 0 0 0 38d
mac-lex-hap-memroy-cpu-7d4b675585 0 0 0 27d
mac-lex-hap-memroy-cpu-7f4f64f6d6 1 1 1 12s
[lex-mac]$ kubectl get pod -n lex-namespace|grep lex
mac-lex-hap-memroy-cpu-6f89c6b56c-wqdhm 1/1 Terminating 0 7m56s
mac-lex-hap-memroy-cpu-7f4f64f6d6-znjwd 1/1 Running 0 23s
```

- get replicaSets uid

$ kubectl get replicaSets mac-lex-hap-memroy-cpu-7f4f64f6d6 -n lex-namespace -o jsonpath='{.metadata.uid}'
093d3479-8f24-4131-abbb-e0f6a3131b5a

- kubectl patch 尝试

```
[lex-mac]$ kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"selector": {"matchLabels": {"194f867a2": "enabled"}}}}' -n teamsnamespace
deployment.apps/sprint-lex-hap-memroy-cpu patched (no change)
[lex-mac]$ kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"selector": {"matchLabels": {"team": "lex"}}}}' -n teamsnamespace
deployment.apps/sprint-lex-hap-memroy-cpu patched (no change)
[lex-mac]$ kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"selector": {"matchLabels": {"team": "lex2"}}}}' -n teamsnamespace
The Deployment "sprint-lex-hap-memroy-cpu" is invalid:
* spec.template.metadata.labels: Invalid value: map[string]string{"194f867a2":"enabled", "app":"nginx", "team":"lex", "type":"pa"}: `selector` does not match template `labels`
* spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"194f867a2":"enabled", "team":"lex2"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
这个报错 是 selector` does not match template `labels` 表面的命令是是针对的selector 看样子是针对的spec.template.metadata.labels ?
```

- 对应关系能找到 也是OK的 但是好像更新都不行 随意改值没什么用 ?对于有些字段来说确实如此

```
kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"selector": {"matchLabels": {"team": "lex"}}}}' -n teamsnamespace OK
kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"template": {"metadata": {"labels": {"team": "lex"}}}}}' -n teamsnamespace OK
deployment.apps/sprint-lex-hap-memroy-cpu patched (no change)
kubectl patch deployment patch-demo --patch '{"spec": {"template": {"spec": {"containers": [{"name": "patch-demo-ctr-2","image": "redis"}]}}}}'
kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"template": {"metadata": {"team": "lex2"}}}}' -n teamsnamespace
kubectl patch deployment sprint-lex-hap-memroy-cpu --patch '{"spec": {"template": {"matchLabels": {"team": "lex2"}}}}' -n teamsnamespace
kubectl get hpa sprint-lex-hap-memroy-cpu-hpa -n teamsnamespace
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
sprint-lex-hap-memroy-cpu-hpa Deployment/sprint-lex-hap-memroy-cpu 5%/50%, 1%/750% 1 4 1 39d
```
```

相关推荐

Linux ntp时钟同步问题(linux ntp同步命令)

有时候,操作系统会报linux的ntp时钟错误。从时钟源同步时间超时。我查看了一下ntp的时钟源,发现执行ntpq-p显示超时。执行nslookup时钟服务器域名,发现可以正常解析。执行了n...

linux服务器同步利器Rsync全介绍(付脚本)

1、认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件...

如何使用Rsync同步两个网站服务器的内容

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zc...

Linux TB级小文件同步备份解决方案

在某些电子档案存储的业务系统下,按照业务场景要求,需要将产生的所有电子影像资料永久存储,并支持备份;因为“钞能力”等原因,一般备份存储只有一个节点(即:一个备份存储服务器);这样就要求研发工程师,不...

CentOS7下使用Lsyncd实现文件实时同步

Lsyncd简单介绍Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更...

如何手动同步Linux系统时间并与互联网时间保持同步?

在Linux系统中,正确的时间同步对于许多任务都是至关重要的。一些关键应用程序可能需要准确的时间戳才能正常工作,而一些安全功能也需要确保所有服务器的时间都是准确的。NTP服务可以自动同步系统时间和互...

Linux服务器Rsync定时同步一键化配置指南

1、主从服务器同时安装rsyncopenssh-clientaptupdate&&aptinstall-yrsyncopenssh-client2、主服务器安装好后输入以下命令生成密钥...

Linux系统如何使用NTPDATE命令设置时间同步

简介:咱们在使用Linux系统的时候,常常能发现用了一阵子之后,Linux系统的时间就对不上了。已经知道的情况是,安装Linux的时候选的时区是Asia/Shanghai,可这系统运行了一...

开源的Linux文件同步工具有哪些?(linux 文件夹 同步)

Linux系统之间经常需要文件同步,一个好的文件同步工具省时省力,这里介绍几款开源的Linux文件同步工具1.rsync:rsync是Linux上一个功能强大的命令行工具,可以在不同的服务器之间同...

Linux 系统使用 rsync + inotify 实现文件实时同步

Linux系统使用rsync+inotify实现文件实时同步简介inotify监控文件的变化后通知rsync进行文件的同步#配置免密登录ssh-keygen-trsaca...

Linux 远程数据同步工具详解(linux远程同步命令)

一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之...

构建基于 Linux 的 NTP 时间同步集群与时间安全防护实战指南

一、为什么时间同步对系统如此重要?在分布式系统、数据库复制、消息队列、审计日志、安全认证(如Kerberos)、容器编排等场景中,系统时间一致性是保障正确性与安全性的基础。一旦服务器间时间漂移,可能...

每日Linux学习:同步备份工具 rsync

rsync是一个用于高效同步文件和目录的工具。它通过仅传输变化的部分(增量传输)来节省时间和带宽,支持本地同步、远程同步(通过SSH),还能保留文件原有权限、时间戳等属性。本文通过几个常用的实例来...

Chromixium OS 1.0发布 基于Ubuntu发行版

Chromixium项目宣布chromixiumOS1发布,一款基于Ubuntu的Linux分支,chromixiumOS试图重新打造一款外观和感觉与ChromeOS相似的完...

iOS8.0.X~iOS8.1完美越狱!盘古团队出品

【巴士速递·移动情报站】最新消息,iOS8.1越狱了!!此次越狱依旧是iOS7时代我国的大神盘古团队带来的,而该次越狱支持最新的iPhone6、iPhone6Plus、iPadAir2和iPad...