У меня сейчас кластер GKE Kubernetes 1.15, и я планирую обновить его до 1.16. Поскольку 1.16 не поддерживает определенные API, я должен изменить свои развертывания с extensions / v1beta1 на apps / v1.
Используя этот простой deploy.yml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Когда я применяю его в мой кластер 1.15: kubectl -n mynamespace deployment.yml
, что на самом деле выглядит следующим образом (kubectl -n mynamespace get deployments nginx-deployment
):
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
kubectl.kubernetes.io/last-applied-configuration: |
...
Как вы можете видеть, фактическим apiVersion является extensions / v1beta1 вместо apps / v1. Почему он не применяет указанную мной версию?
ОБНОВЛЕНИЕ:
Это моя версия kubectl:
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T23:41:24Z", GoVersion:"go1.14", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.9-gke.24", GitCommit:"39e41a8d6b7221b901a95d3af358dea6994b4a40", GitTreeState:"clean", BuildDate:"2020-02-29T01:24:35Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}