Kubernetes(K8S) deployment 拉取阿里云镜像

打印 上一主题 下一主题

主题 750|帖子 750|积分 2250

Docker Image 推到阿里云仓库,可以看 SpringBoot Docker 发布到 阿里仓库
1. 阿里镜像仓库加了授权,所以 K8S 拉之前要做下授权处理
  1. [root@k8smaster ~]# kubectl create secret docker-registry registry-demo  \
  2.     --namespace=default \
  3.     --docker-server=registry.cn-shanghai.aliyuncs.com \
  4.     --docker-username=hi帐户ID@aliyun.com \
  5.     --docker-password=vipsoft \
  6.     --docker-email=xxxxx@qq.com
  7. secret/registry-demo created
  8. [root@k8smaster ~]# kubectl get secrets
  9. NAME                  TYPE                                  DATA   AGE
  10. default-token-q7lps   kubernetes.io/service-account-token   3      5d17h
  11. registry-demo         kubernetes.io/dockerconfigjson        1      2m53s
  12. [root@k8smaster ~]# kubectl describe secrets registry-demo
  13. Name:         registry-demo
  14. Namespace:    default
  15. Labels:       <none>
  16. Annotations:  <none>
  17. Type:  kubernetes.io/dockerconfigjson
  18. Data
  19. ====
  20. .dockerconfigjson:  196 bytes
  21. [root@k8smaster ~]#  
复制代码
解释说明:
  1. [root@k8smaster ~]# kubectl create secret docker-registry registry-demo  \ #创建类型为:docker-registry的secrets名称为registry-demo                 
  2.     --namespace=default \  # 值 default 可不写,默认为 default, 不同Namespace,在创建secrets时需要指定Namespace,
  3.     --docker-server=registry.cn-shanghai.aliyuncs.com \  #阿里云镜像仓库,公网地址
  4.     --docker-username=hi帐户ID@aliyun.com \   #阿里云的帐号
  5.     --docker-password=vipsoft \              #仓库的密码,在 仓库管理-> 访问凭证中可设置
  6.     --docker-email=xxxx@qq.com               # 用户邮箱
  7. [root@k8smaster ~]# kubectl get secret registry-demo -o yaml #查看secret详细信息
复制代码
2. 生成 yaml ,并修改yaml 配置 imagePullSecrets,否则后面会报 ImagePullBackOff,拉取需要登录 requested access to the resource is denied
K8S 拉取镜像 ImagePullBackOff pull access denied
  1. [root@k8smaster ~]# kubectl create deployment javademo1 --image=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0 --dry-run -o yaml > javademo1.yaml
  2. W1018 18:49:33.112150   62765 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
  3. [root@k8smaster ~]# vi javademo1.yaml
  4. apiVersion: apps/v1
  5. kind: Deployment
  6. metadata:
  7.   creationTimestamp: null
  8.   labels:
  9.     app: javademo1
  10.   name: javademo1
  11. spec:
  12.   replicas: 1
  13.   selector:
  14.     matchLabels:
  15.       app: javademo1
  16.   strategy: {}
  17.   template:
  18.     metadata:
  19.       creationTimestamp: null
  20.       labels:
  21.         app: javademo1
  22.     spec:
  23.       containers:
  24.       - image: registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0
  25.         name: vipsoft
  26.         resources: {}
  27.       imagePullSecrets:
  28.       - name: registry-demo
  29. status: {}
复制代码
3. 创建容器
  1. [root@k8smaster ~]# kubectl apply -f javademo1.yaml
  2. deployment.apps/javademo1 created  
  3. [root@k8smaster ~]# kubectl get pods
  4. NAME                         READY   STATUS              RESTARTS   AGE
  5. javademo1-84dd5c9485-8ckk6   0/1     ContainerCreating   0          6s
  6. nginx-f89759699-5hkdw        1/1     Running             0          5d17h
  7. [root@k8smaster ~]# kubectl get pods
  8. NAME                         READY   STATUS    RESTARTS   AGE
  9. javademo1-84dd5c9485-8ckk6   1/1     Running   0          65s
  10. nginx-f89759699-5hkdw        1/1     Running   0          5d17h
  11. [root@k8smaster ~]# kubectl get pods -o wide
  12. NAME                         READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
  13. javademo1-84dd5c9485-8ckk6   1/1     Running   0          111s    10.244.1.4   k8snode1   <none>           <none>
  14. nginx-f89759699-5hkdw        1/1     Running   0          5d17h   10.244.2.2   k8snode2   <none>           <none>
  15. [root@k8smaster ~]# kubectl scale deployment javademo1 --replicas=3  # 扩容3个服务
  16. deployment.apps/javademo1 scaled
  17. [root@k8smaster ~]# kubectl get pods -o wide
  18. NAME                         READY   STATUS             RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
  19. javademo1-84dd5c9485-7vgkr   0/1     ImagePullBackOff   0          16s     10.244.2.6   k8snode2   <none>           <none>
  20. javademo1-84dd5c9485-8ckk6   1/1     Running            0          6m21s   10.244.1.4   k8snode1   <none>           <none>
  21. javademo1-84dd5c9485-8hfmd   0/1     ImagePullBackOff   0          16s     10.244.2.7   k8snode2   <none>           <none>
  22. nginx-f89759699-5hkdw        1/1     Running            0          5d17h   10.244.2.2   k8snode2   <none>           <none>
  23. [root@k8smaster ~]# kubectl get pods -o wide
  24. NAME                         READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
  25. javademo1-84dd5c9485-7vgkr   1/1     Running   0          58s     10.244.2.6   k8snode2   <none>           <none>
  26. javademo1-84dd5c9485-8ckk6   1/1     Running   0          7m3s    10.244.1.4   k8snode1   <none>           <none>
  27. javademo1-84dd5c9485-8hfmd   1/1     Running   0          58s     10.244.2.7   k8snode2   <none>           <none>
  28. nginx-f89759699-5hkdw        1/1     Running   0          5d17h   10.244.2.2   k8snode2   <none>           <none>
  29. [root@k8smaster ~]# kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort   # 对外暴露端口,不然不能访问
  30. service/javademo1 exposed
  31. [root@k8smaster ~]# kubectl get svc #查看 service 的运行状态
  32. NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
  33. javademo1    NodePort    10.106.43.46   <none>        8111:31452/TCP   25s
  34. kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          5d17h
  35. nginx        NodePort    10.103.87.81   <none>        80:30339/TCP     5d17h
  36. [root@k8smaster ~]#
复制代码
4. 测试

 5. 补充
CrashLoopBackOff容器退出,kubelet正在将它重启
InvalidImageName无法解析镜像名称
ImageInspectError无法校验镜像
ErrImageNeverPul策略禁止拉取镜像
ImagePullBackOff正在重试拉取
RegistryUnavailable连接不到镜像中心
ErrImagePull通用的拉取镜像出错
CreateContainerConfigError不能创建kubelet使用的容器配置
CreateContainerError创建容器失败
m.internalLifecycle.PreStartContainer执行hook报错
RunContainerError启动容器失败
PostStartHookError执行hook报错
ContainersNotInitialized容器没有初始化完毕
ContainersNotReady容器没有准备完毕
ContainerCreating容器创建中
PodInitializingpod初始化中
DockerDaemonNotReadydocker还没有完全启动
NetworkPluginNotReady网络插件还没有完全启动
Evicted即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。多见于资源不足时导致的驱赶。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表