У меня есть один образ, который я пытаюсь развернуть в кластере AKS. Образ хранится в реестре контейнеров Azure, и я просто пытаюсь применить файл YAML, чтобы загрузить его в AKS, используя следующую команду:
kubectl apply -f myPath\myimage.yaml
kubectl продолжает жаловаться, что мне не хватает обязательного поля «селектор» и что поле «спецификация» неизвестно. Это похоже на базовую конфигурацию образа, поэтому я не знаю, что еще попробовать.
kubectl : error: error validating "myimage.yaml": error validating data: [ValidationError(Deployment.spec): unknown field "spec" in io.k8s.api.apps.v1.DeploymentSpec, ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec]; if you choose to ignore these errors, turn validation off with --validate=false At line:1 char:1
apiVersion: apps/v1
kind: Deployment
metadata:
name: myimage
spec:
replicas: 1
template:
metadata:
labels:
app: myimage
spec:
containers:
- name: myimage
image: mycontainers.azurecr.io/myimage:v1
ports:
- containerPort: 5000
Как указано в сообщении об ошибке, для развертывания требуется поле селектора внутри спецификации. Вы можете посмотреть по ссылке несколько примеров.
Также обратите внимание, что есть два поля спецификаций. Один для развертывания и один для модуля, используемого в качестве шаблона. Ваша спецификация для стручка смещена. Он должен быть на один уровень глубже.
У вас неправильный отступ второго поля spec
, а также вы пропустили selector
в первом spec
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: myimage
spec:
replicas: 1
selector:
matchLabels:
app: myimage
template:
metadata:
labels:
app: myimage
spec:
containers:
- name: myimage
image: mycontainers.azurecr.io/myimage:v1
ports:
- containerPort: 5000