#azure #kubernetes #azure-aks
#azure #kubernetes #azure-aks
Вопрос:
Я пытаюсь настроить кластер azure kubernetes и создал его на портале.настроил проект .net core webapi, а также опубликовал изображение в azure container register. После применения файла манифеста я получаю сообщение о созданной службе, а также внешний IP. однако, когда я получаю модули, я постоянно получаю статус «Ожидающий»
NAME READY STATUS RESTARTS AGE
kubdemo1api-6c67bf759f-6slh2 0/1 Pending 0 6h
вот мой файл манифеста yaml, кто-нибудь может подсказать, что здесь не так?
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubdemo1api
labels:
name: kubdemo1api
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
minReadySeconds: 30
selector:
matchLabels:
app: kubdemo1api
template:
metadata:
labels:
app: kubdemo1api
version: "1.0"
tier: backend
spec:
containers:
- name: kubdemo1api
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
timeoutSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
timeoutSeconds: 10
image: my container registry image address
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
timeoutSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
timeoutSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: azkubdemoapi1
spec:
ports:
-
port: 80
selector:
app: kubdemo1api
type: LoadBalancer
Редактировать:
Выходные модули описания kubectl — это
вот оно
Normal Scheduled 2m default-scheduler Successfully assigned default/kubdemo1api-697d5655c-64fnj to aks-agentpool-87689508-0
Normal Pulling 37s (x4 over 2m) kubelet, aks-agentpool-87689508-0 pulling image "myacrurl/azkubdemo:v2"
Warning Failed 37s (x4 over 2m) kubelet, aks-agentpool-87689508-0 Failed to pull image "my acr url": [rpc error: code = Unknown desc = Error response from daemon: Get https://myacrurl/v2/azkubdemo/manifests/v2: unauthorized: authentication required, rpc error: code = Unknown desc = Error response from daemon: Get https://myacrurl/v2/azkubdemo/manifests/v2: unauthorized: authentication required]
Warning Failed 37s (x4 over 2m) kubelet, aks-agentpool-87689508-0 Error: ErrImagePull
Normal BackOff 23s (x6 over 2m) kubelet, aks-agentpool-87689508-0 Back-off pulling image "myacrlurl/azkubdemo:v2"
Warning Failed 11s (x7 over 2m) kubelet, aks-agentpool-87689508-0 Error: ImagePullBackOff
Комментарии:
1. можете ли вы поделиться результатами
kubectl describe pod kubdemo1api-6c67bf759f-6slh2
2. добавлено в вопрос
3. Ошибка показывает, что вам необходимо пройти аутентификацию в вашем реестре, чтобы извлечь изображение. Вы можете использовать
imagePullSecrets
для аутентификации в своем реестре. Смотрите пример ACR .4. Есть еще вопросы? Или, если совет сработает для вас, я бы добавил ответ для других, кто сталкивается с такой же проблемой. Пожалуйста, сообщите мне результат.
5. аутентификация с использованием imagePullSecrets выполнила свою работу за меня. однако перед этим мне пришлось создать secret в кластере, доступном для использования узлами.
Ответ №1:
Что касается ошибки, которую вы предоставляете, это показывает, что вам необходимо пройти аутентификацию, чтобы извлечь изображение из реестра контейнеров Azure.
На самом деле, вам просто нужно разрешение на извлечение изображения, и acrpull
роли вполне достаточно. Этого можно достичь двумя способами.
Во-первых, просто предоставьте AKS доступ к реестру контейнеров Azure. На моей стороне это проще всего. Просто нужно создать назначение роли для участника-службы, которое использовал AKS. Все этапы см. в разделе Предоставление доступа AKS к ACR.
Другая проблема заключается в том, что они используют секрет Kubernetes. Это немного сложнее, чем первое. Вам необходимо создать новую службу-участника, отличную от той, которую использовал AKS, и предоставить к ней доступ, затем создать секрет kubernetes с помощью службы-участника. Все этапы см. в разделе Доступ с помощью Kubernetes secret.
Ответ №2:
Этот Yaml неверен, можете ли вы предоставить правильный yaml, намерения неверны. Попробуйте приведенный ниже YAML
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubdemo1api
labels:
name: kubdemo1api
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
minReadySeconds: 30
selector:
matchLabels:
app: kubdemo1api
template:
metadata:
labels:
app: kubdemo1api
version: "1.0"
tier: backend
spec:
containers:
- name: kubdemo1api
image: nginx
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
timeoutSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: azkubdemoapi1
spec:
ports:
- port: 80
selector:
app: kubdemo1api
type: LoadBalancer