Docker k3s吊舱不是头盔部署';这是我的秘密
我正在circlci中创建一个部署,将我的容器化应用程序部署到我设置的k3s服务器上。我用找到的命令设置了一个秘密 使用以下命令创建机密:Docker k3s吊舱不是头盔部署';这是我的秘密,docker,kubernetes,kubernetes-helm,kubernetes-secrets,k3s,Docker,Kubernetes,Kubernetes Helm,Kubernetes Secrets,K3s,我正在circlci中创建一个部署,将我的容器化应用程序部署到我设置的k3s服务器上。我用找到的命令设置了一个秘密 使用以下命令创建机密: kubectl create secret docker-registry regkeyname --docker-server=https://index.docker.io/v1/ \ --docker-username=username \ --docker-password=password \ --docker-email=my@emai
kubectl create secret docker-registry regkeyname --docker-server=https://index.docker.io/v1/ \
--docker-username=username \
--docker-password=password \
--docker-email=my@email.com \
--namespace=external
运行kubectl get secret regkeyname--namespace=external--output=yaml
时,我的秘密如下:
apiVersion: v1
data:
.dockerconfigjson: secretbase64stuff
kind: Secret
metadata:
creationTimestamp: "2020-11-24T13:11:07Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {}
f:.dockerconfigjson: {}
f:type: {}
manager: kubectl
operation: Update
time: "2020-11-24T13:11:07Z"
name: regkeyname
namespace: external
resourceVersion: "16929381"
selfLink: /api/v1/namespaces/external/secrets/regkeyname
uid: 51b87508-9cf2-490b-b871-0b5a342ab64c
type: kubernetes.io/dockerconfigjson
我正在使用helm部署我的应用程序,部署如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.labels.app }}
labels:
app: {{ .Values.labels.app }}
spec:
selector:
matchLabels:
app: {{ .Values.labels.app }}
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: {{ .Values.labels.app }}
env: {{ .Values.labels.env }}
spec:
imagePullSecrets:
- name: regkeyname
containers:
- name: my-service
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.imagePullPolicy }}
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 5
successThreshold: 1
然而,在部署之后,图像无法提取,并且我的秘密“regkeyname”似乎没有在pod中使用/装载。结果如下:
Name: my-service-856454c6cd-qcp7w
Namespace: external
Priority: 0
Node: worker-2/192.168.1.13
Start Time: Tue, 24 Nov 2020 07:20:08 -0600
Labels: app=my-service
env=development
pod-template-hash=856454c6cd
Annotations: <none>
Status: Pending
IP: 10.42.2.196
Controlled By: ReplicaSet/my-service-856454c6cd
Containers:
auth-service:
Container ID:
Image: my-repo/my-service:latest
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Readiness: http-get http://:8080/health delay=10s timeout=1s period=10s #success=1 #failure=5
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-l9b4k (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-l9b4k:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-l9b4k
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned external/auth-service-856454c6cd-qcp7w to worker-2
Normal Pulling 32m (x4 over 34m) kubelet, worker-2 Pulling image "my-repo/my-service:latest"
Warning Failed 32m (x4 over 34m) kubelet, worker-2 Failed to pull image "my-repo/my-service:latest": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/my-repo/my-service:latest": failed to resolve reference "docker.io/my-repo/my-service:latest": failed to do request: Head https://registry-1.docker.io/v2/my-repo/my-service/manifests/latest: dial tcp: lookup registry-1.docker.io: Try again
Warning Failed 32m (x4 over 34m) kubelet, worker-2 Error: ErrImagePull
Warning Failed 31m (x6 over 34m) kubelet, worker-2 Error: ImagePullBackOff
Normal BackOff 3m54s (x127 over 34m) kubelet, worker-2 Back-off pulling image "my-repo/my-service:latest"
名称:my-service-856454c6cd-qcp7w
名称空间:外部
优先级:0
节点:worker-2/192.168.1.13
开始时间:2020年11月24日星期二07:20:08-0600
标签:app=我的服务
env=发展
pod模板哈希=856454c6cd
注释:
状态:待定
IP:10.42.2.196
控制人:ReplicaSet/my-service-856454c6cd
容器:
身份验证服务:
容器ID:
图片:我的回购/我的服务:最新
图像ID:
端口:
主机端口:
国家:等待
原因:图像拉回
就绪:错误
重新启动计数:0
准备就绪:http get http://:8080/运行状况延迟=10s超时=1s周期=10s#成功=1#失败=5
挂载:
/来自default-token-l9b4k(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备错误
集装箱准备好了吗
播客预定为真
卷数:
default-token-l9b4k:
类型:Secret(由Secret填充的卷)
SecretName:default-token-l9b4k
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
正常计划的默认计划程序已成功将外部/auth-service-856454c6cd-qcp7w分配给worker-2
正常拉动32m(x4/34m)kubelet,工人2拉动图像“我的回购/我的服务:最新”
警告失败32m(x4/34m)kubelet,worker-2未能提取映像“我的回购/我的服务:最新”:rpc错误:代码=未知描述=未能提取和解压缩映像“docker.io/my repo/my service:latest”:未能解析引用“docker.io/my repo/my service:latest”:执行请求失败:Headhttps://registry-1.docker.io/v2/my-repo/my-service/manifests/latest: 拨号tcp:lookup registry-1.docker.io:重试
警告失败32m(x4超过34m)kubelet,辅助工2错误:ErrImagePull
警告失败31米(x6超过34米)kubelet,工人2错误:ImagePullBackOff
正常回退3m54s(x127/34m)kubelet,工人2回退拉图像“我的回购/我的服务:最新”
我在使用kubernetes在本地运行时遇到了这个问题,因此我假设这个问题一定与k3s有关,或者是因为现在服务器是远程的,而不是本地的。如有任何见解,将不胜感激。提前谢谢 控制器正试图从docker官方注册表中提取图像: 无法解析引用“docker.io/my repo/my service:latest” 创建
imagePullSecret
时,请确保您输入了正确的URL(即专用注册表的URL)以执行身份验证和提取图像
$cat~/.docker/config.json
{
“授权”:{
"https://index.docker.io/v1/": {#repo在dockerhub上是私有的。这是否意味着我需要将docker服务器更改为?我对~/.docker/config.json有点困惑。我认为应该使用秘密而不是docker配置,这不是imagePullSecrets的工作方式?是的,将使用秘密,但错误是,注册表没有名为my的图像-我的回购
存储库中的servic
。我的回购
应替换为您的docker用户名(如果它是dockerhub的帐户)。这就是我的主要困惑所在。我可以在本地运行docker pull my repo/my service:最新版本,它工作正常:它成功地提取并打印:“状态:我的回购/我的服务:最新”和“docker.io/我的回购/我的服务:最新”下载的更新图像“表示repo存在并且在本地没有问题。为什么说它只能从k3s中找到repo?@MarcusRuddick这是因为您使用该repo/name
构建了映像。它在本地找到映像,这就是为什么它从不从远程服务器提取映像。尝试删除(即docker rmi)从本地机器上的图像,你也会发现同样的错误。