Я смог воспроизвести ваш сценарий и не получил никакой ошибки.
Я опубликую пошаговый пример, чтобы вы могли дважды проверить свой.
- I ' В качестве примера будем использовать простой nginx сервер, вот структура файлов:
$ 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
Все было развернуто в соответствии с назначением: пакет, развертывание, обслуживание и репликация, с 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
- Это ожидаемое поведение, и количество реплик было уменьшено до 2.
Предложения :
- Я заметил, что вы добавили к вопросу развертывание после развертывания (
through kubectl get deploy <name> -o yaml
), но, возможно, проблема в исходном файле, и при применении она несколько изменилась. - Попробуйте воспроизвести его с примерами файлов, которые я предоставил, чтобы увидеть, получаете ли вы тот же вывод.
Дайте мне знать ваши результаты!