创建k8s 镜像仓库登录密钥
原标题:k8s使用私有镜像仓库的访问凭据配置
k8s创建私有仓库凭据有两种方式
1.使用kubectl命令创建secret
2.使用docker凭证作为k8s的凭据。文章来源地址https://www.yii666.com/blog/458024.html
1.使用kubectl命令创建secret
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
<name>:凭据名称
DOCKER_REGISTRY_SERVER:私有服务地址
DOCKER_USER:登录账号文章地址https://www.yii666.com/blog/458024.html
DOCKER_PASSWORD:密码
文章来源地址:https://www.yii666.com/blog/458024.htmlDOCKER_EMAIL:邮箱
2.使用docker凭证作为k8s的凭据。
1.首先登录私有服务
docker login -u admin -p 123456 192.168.0.76:81
2.查看auth文件内容并生成密钥
cat /root/.docker/config.json |base64 -w 0
3.创建secret.yaml文件
apiVersion: v1
kind: Secret
metadata:
name: login
namespace: test-tomcat2
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJwcmsaasdfWRhdGEuY29tOjM0NDMiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2ZVdsa1lVQWpNakF5TXc9PSIKCQl9Cgl9Cn0=
4.在yaml文件中使用凭据
apiVersion: apps/v1
kind: Deployment #绑定的是Deployment模板
metadata: #元数据
name: tomcat-deployment2 # deployment模板的名字
namespace: test-tomcat5
labels: # 标签
app: tomcat # app 名字,需要和后面的service.yaml 一致
spec: # pod 的描述信息
replicas: 1 # 开启两个pods
selector: #关联pod 选择器
matchLabels:
app: tomcat # 需要和app 一致
template:
metadata:
labels:
app: tomcat # 需要和app 名字一致
spec:
imagePullSecrets: #提取私有仓库秘钥
- name: test-tomcat3/login #指定命名空间中的秘钥仓库
nodeSelector:
node: master02 #指定节点运行
volumes: # 宿主机挂载目录
- name: web-app-webapps # 给需要挂载的宿主机路径起个名字
hostPath: # 宿主机路径
path: /home/yida/test/webapps # 路径: 宿主机路径目录
- name: web-app-logs
hostPath:
path: /home/yida/test/logs
containers: # 容器描述
- name: tomcat # 容器的名字
image: private.yd-data.com/test/tomcat9:v1 # 要拉取的镜像地址
resources:
limits:
memory: 2Gi
requests:
memory: 1Gi
ports: # 容器内部映射的端口号
- containerPort: 8080 # 容器内部映射的端口号
volumeMounts: # 容器内部映射的目录路径
- name: web-app-webapps # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
mountPath: /usr/local/tomcat/webapps # 容器内部映射挂载的目录路径
- name: web-app-logs
mountPath: /usr/local/tomcat/logs
5.如果部署pod拉取镜像报这个错:Error from server (BadRequest): container "redis-con" in pod "redis-v1" is waiting to start: trying and failing to pull image
则需要将docker login后生成的/root/.docker/config.json文件复制到/var/lib/kubelet/config.json。然后在kubernetes上重新部署即可正常拉取镜像。