我有一个 Kube 清单,需要将其应用于具有不同资源设置的几个 kubernetes 集群。为此,我需要即时更改此文件的资源部分。这是它的内容:
apiVersion: v1
kind: Service
metadata:
name: abc-api
labels:
app: abc-api
spec:
ports:
- name: http
port: 80
targetPort: 3000
- name: https
port: 3000
targetPort: 3000
selector:
app: abc-api
tier: frontend
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: abc-api
labels:
app: abc-api
spec:
selector:
matchLabels:
app: abc-api
tier: frontend
strategy:
type: Recreate
template:
metadata:
labels:
app: abc-api
tier: frontend
spec:
containers:
- image: ABC_IMAGE
resources:
requests:
memory: "128Mi"
cpu: .30
limits:
memory: "512Mi"
cpu: .99
我搜索并发现 yq 是一个更好的工具。但是,当我从该文件中读取值时,它只显示它直到带有'3 dashes'的行:没有超过该值的值。
# yq r worker/deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: hometales-api
labels:
app: hometales-api
spec:
ports:
- name: http
port: 80
targetPort: 3000
- name: https
port: 3000
targetPort: 3000
selector:
app: hometales-api
tier: frontend
我想阅读部署部分,以及编辑资源值。
阅读部分:
---
apiVersion: apps/v1
kind: Deployment
metadata:
....
要编辑的部分:
resources:
requests:
memory: "128Mi"
cpu: .20
limits:
memory: "512Mi"
cpu: .99
那么问题的第一部分:如何在第二个 3 破折号实例之后阅读?问的第二部分:如何动态编辑资源值?
我可以运行此命令并阅读此部分,但无法进一步读取内存或 cpu 值:
# yq r -d1 deployment.yaml "spec.template.spec.containers[0].resources.requests"
memory: "128Mi"
cpu: .20