docker - Kubernetes 中的 Angular 无法提取图像
问题描述
我从一个角度项目创建了一个图像并推送到 dockerHub。我可以看到,如果我去 localhost:80 它将打开门户。这是步骤:
ng build
docker build -t tiberiu1234/template:v1 .
docker run -rm -d -p 80:80 tiberiu1234/template:v1
现在我尝试做同样的事情,但在 kubernetes 中。我创建了部署和服务并使用相同的图像触发它:
apiVersion: apps/v1
kind: Deployment
metadata:
name: portal-deployment
labels:
app: portal
spec:
replicas: 3
selector:
matchLabels:
app: portal
template:
metadata:
labels:
app: portal
spec:
containers:
- name: portal
image: tiberiu1234/portal:v1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: portal-service
spec:
selector:
app: portal
ports:
- protocol: TCP
port: 80
targetPort: 80
现在,如果我去检查,我会看到:
portal-deployment 0/3 3 0 4m1s
portal-service ClusterIP 10.2.0.114 <none> 80/TCP 3m56s
portal-deployment-67c6d9bb6c-88cvn 0/1 ImagePullBackOff 0 23m
portal-deployment-67c6d9bb6c-jrmjz 0/1 ImagePullBackOff 0 23m
portal-deployment-67c6d9bb6c-wm65h 0/1 ImagePullBackOff 0 23m
错误是: kubectl logs -f portal-deployment-67c6d9bb6c-88cvn 服务器错误(BadRequest):pod“portal-deployment-67c6d9bb6c-88cvn”中的容器“portal”正在等待启动:尝试提取图像 但我不这样做'不明白为什么,你能帮我解决这个问题吗?
解决方案
您的存储库是私有的,需要登录才能提取图像。
您需要为 kubernetes 创建一个注册表凭据机密,因为它不使用 docker 凭据。
见https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1. 创建一个名为 regcred 的秘密:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
2. 然后在你的部署描述符中使用这个秘密:
apiVersion: apps/v1
kind: Deployment
...
spec:
...
template:
spec:
imagePullSecrets:
- name: regcred
...
推荐阅读
- compiler-construction - 将左线性语法转换为右线性语法时,是否有任何众所周知的方法?
- regex - 使用 PostgreSQL 从 url 中提取域
- node.js - 我需要从数组中获取我关注的用户名
- python - Python网页抓取如何循环所有页面/下一页
- java - 将用户数据保存在 jar 文件本身中
- c++ - 链接标志对静态库意味着什么?
- php - 如何修复警告:mysql_set_charset() 期望参数 1 是字符串,资源在
- c++ - 在 Mac OS X 中通过进程 id 获取应用程序启动参数
- java - eclipse IDE错误警告未使用的字段
- oracle - 我们在哪里存储在 PLSQL 的包规范中声明的全局变量