Skip to content

Latest commit

 

History

History
93 lines (73 loc) · 3.13 KB

Kubernetes上部署自定义镜像.md

File metadata and controls

93 lines (73 loc) · 3.13 KB

在Kubernetes上部署自定义仓库的镜像

在完成Kubernetes单机部署后,尝试在云服务器上Deployment自定义的Node.js应用镜像。

环境

  • 已完成单机部署Kubernetes的Ubuntu服务器
  • 阿里云镜像仓库中有一份Node.js应用的镜像

部署

部署自定义镜像

  • 创建deployment_reactssr.yaml配置文件,并添加以下配置内容:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reactssr-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: reactssr
  template:
    metadata:
      labels:
        app: reactssr
    spec:
      containers:
      - name: reactssr
        image: registry.cn-hangzhou.aliyuncs.com/仓库/镜像:版本
        ports:
        - containerPort: 3000
  • 创建reactssr-deployment
kubectl create -f deployment_reactssr.yaml --record
  • 运行命令kubectl get pods,会发现reactssr-deployment的状态是ImagePullBackOff,因为k8s拉取私有仓库的镜像失败,可以使用命令kubectl describe pod reactssr-deployment-7d6f59fc7d-mffsv,返回以下内容:
...
Events:
  Type     Reason     Age                  From                              Message
  ----     ------     ----                 ----                              -------
  Normal   Scheduled  2m49s                default-scheduler                 Successfully assigned default/reactssr-deployment-7d6f59fc7d-mffsv to izbp162mggaelsax3pz9n6z
  Normal   BackOff    91s (x6 over 2m47s)  kubelet, izbp162mggaelsax3pz9n6z  Back-off pulling image "registry.cn-hangzhou.aliyuncs.com//仓库/镜像:版本"
  Normal   Pulling    79s (x4 over 2m48s)  kubelet, izbp162mggaelsax3pz9n6z  pulling image "registry.cn-hangzhou.aliyuncs.com//仓库/镜像:版本"
  Warning  Failed     79s (x4 over 2m48s)  kubelet, izbp162mggaelsax3pz9n6z  Failed to pull image "registry.cn-hangzhou.aliyuncs.com//仓库/镜像:版本": rpc error: code = Unknown desc = Error response from daemon: pull access denied for registry.cn-hangzhou.aliyuncs.com/仓库/镜像, repository does not exist or may require 'docker login'
  Warning  Failed     79s (x4 over 2m48s)  kubelet, izbp162mggaelsax3pz9n6z  Error: ErrImagePull
  Warning  Failed     67s (x7 over 2m47s)  kubelet, izbp162mggaelsax3pz9n6z  Error: ImagePullBackOff
  • 使用KubernetesSecret来解决,拉取私有库镜像的验证问题
kubectl create secret docker-registry myregistrykey --docker-server={server} --docker-username={username} --docker-password={password}
  • 重新编辑reactssr-deployment的配置,运行命令kubectl edit deployment/reactssr-deployment,添加imagePullSecrets

  • 创建配置文件reactssr_service.yaml

apiVersion: v1
kind: Service
metadata:
  name: reactssr-service
spec:
  selector:
    app: reactssr
  ports:
    - protocol: TCP
      port: 9899
      targetPort: 3000
      nodePort: 31001
  type: NodePort
  • 创建Service
kubectl create -f reactssr_service.yaml

参考资料

Secret - Kubernetes中文 Doc