[英]Kustomize - “failed to find unique target for patch …”
我剛開始使用 kustomize。 我有以下用於 kustomize 的 yaml 文件:
ls -l ./kustomize/base/
816 Apr 18 21:25 deployment.yaml
110 Apr 18 21:31 kustomization.yaml
310 Apr 18 21:25 service.yaml
其中 deployment.yaml 和 service.yaml 是使用 jib 生成的文件,它們運行良好。 而kustomization.yaml的內容如下:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service.yaml
- deployment.yaml
在另一個目錄中
ls -l ./kustomize/qa
133 Apr 18 21:33 kustomization.yaml
95 Apr 18 21:37 update-replicas.yaml
在哪里
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
patchesStrategicMerge:
- update-replicas.yaml
和
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
運行“kustomize build./kustomize/base”后,我運行
~/kustomize build ./kustomize/qa
Error: no matches for OriginalId ~G_~V_Deployment|~X|my-app; no matches for CurrentId ~G_~V_Deployment|~X|my-app; failed to find unique target for patch ~G_~V_Deployment|my-app
我查看了相關文件,並沒有在應用程序名稱上看到任何拼寫錯誤。
這是 deployment.yaml 文件。
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: my-app
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: my-app
spec:
containers:
- image: docker.io/[my Docker ID]/my-app
name: my-app
resources: {}
readinessProbe:
httpGet:
port: 8080
path: /actuator/health/readiness
livenessProbe:
httpGet:
port: 8080
path: /actuator/health/liveness
lifecycle:
preStop:
exec:
command: ["sh", "-c", "sleep 10"]
status: {}
同樣,上面的文件是使用 jib 生成的,並進行了一些修改。 它直接在 Kubernetes 上運行。
如何解決這個問題?
我能夠重現您的場景並且沒有收到任何錯誤。
我將發布一個分步示例,以便您仔細檢查您的示例。
$ tree Kustomize/
Kustomize/
├── base
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── qa
├── kustomization.yaml
└── update-replicas.yaml
2 directories, 5 files
$ cat Kustomize/base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
$ cat Kustomize/base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx
ports:
- containerPort: 80
$ cat Kustomize/base/service.yaml
kind: Service
apiVersion: v1
metadata:
name: nginx-svc
spec:
selector:
app: my-app
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
$ cat Kustomize/qa/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
patchesStrategicMerge:
- update-replicas.yaml
$ cat Kustomize/qa/update-replicas.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
base
並申請:$ kustomize build ./Kustomize/base | kubectl apply -f -
service/nginx-svc created
deployment.apps/my-app created
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/my-app-64778f875b-7gsg4 1/1 Running 0 52s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-svc NodePort 10.96.114.118 <none> 80:31880/TCP 52s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-app 1/1 1 1 52s
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-app-64778f875b 1 1 1 52s
一切都按預期部署,pod、部署、服務和副本集,有 1 個副本。 - 現在讓我們部署qa
更新:
$ kustomize build ./Kustomize/qa/ | kubectl apply -f -
service/nginx-svc unchanged
deployment.apps/my-app configured
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/my-app-64778f875b-7gsg4 1/1 Running 0 3m26s
pod/my-app-64778f875b-zlvfm 1/1 Running 0 27s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-svc NodePort 10.96.114.118 <none> 80:31880/TCP 3m26s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-app 2/2 2 2 3m26s
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-app-64778f875b 2 2 2 3m26s
建議:
through kubectl get deploy <name> -o yaml
),但問題可能出在原始文件中,並且在應用時有所改變。讓我知道你的結果!
我遇到了同樣的問題並修復了。 此問題與安裝的 Kustomize 版本有關。 查看! kustomize version
。 從 Kustomize v3.0.x 及更高版本開始,我們也需要在補丁中提及命名空間。 在補丁 yaml 文件中添加命名空間后,問題得到解決。
在您的示例中,在 update-replicas.yaml 補丁文件的元數據下添加命名空間。
有關 kustomize 版本相關問題的更多詳細信息(例如“...未能找到補丁的唯一目標...”): https://github.com/kubernetes-sigs/kustomize/issues/1351
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.