azure - 无法访问 azure kubernetes 的服务
问题描述
我正在尝试配置 azure kubernetes 集群并在 portal.dockerized .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 describe pods 是这个
就这个
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
解决方案
对于您提供的错误,它表明您必须进行身份验证才能从 Azure 容器注册表中提取映像。
实际上,您只需要拉取图像的权限,acrpull
角色就足够了。有两种方法可以实现它。
一种是仅授予 AKS 对 Azure 容器注册表的访问权限。这是我这边最简单的。只需为 AKS 使用的服务主体创建角色分配。有关整个步骤,请参阅授予 AKS 对 ACR 的访问权限。
另一种是使用 Kubernetes 密钥。它比第一个复杂一点。您需要创建一个与使用的 AKS 不同的新服务主体并授予对它的访问权限,然后使用该服务主体创建 kubernetes 机密。有关整个步骤,请参阅使用 Kubernetes 密钥访问。
推荐阅读
- javascript - 函数后面的括号是什么意思:reverse[0]?
- javascript - 使用 socket.io 创建房间
- android - 在后备资源上获取 android.content.res.Resources$NotFoundException
- ios - 无法将 UIButton 添加到 tableView 部分
- jenkins - Jenkins 中秘密文件的格式是什么?
- javascript - 正则表达式来识别特定的字符串而不仅仅是键
- python - Python:从 S3 存储桶中读取没有 Pandas 的 CSV 文件
- python - Python 对象没有属性
- c# - 如何从被调用的方法中更改变量
- python-3.x - 如何使用python在一列中指定特殊时间