千千梦丶琪 发表于 2022-10-19 15:34:52

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

Docker Image 推到阿里云仓库,可以看 SpringBoot Docker 发布到 阿里仓库
1. 阿里镜像仓库加了授权,所以 K8S 拉之前要做下授权处理
# kubectl create secret docker-registry registry-demo\
    --namespace=default \
    --docker-server=registry.cn-shanghai.aliyuncs.com \
    --docker-username=hi帐户ID@aliyun.com \
    --docker-password=vipsoft \
    --docker-email=xxxxx@qq.com
secret/registry-demo created
# kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-q7lps   kubernetes.io/service-account-token   3      5d17h
registry-demo         kubernetes.io/dockerconfigjson      1      2m53s
# kubectl describe secrets registry-demo
Name:         registry-demo
Namespace:    default
Labels:       <none>
Annotations:<none>

Type:kubernetes.io/dockerconfigjson

Data
====
.dockerconfigjson:196 bytes
#解释说明:
# kubectl create secret docker-registry registry-demo\ #创建类型为:docker-registry的secrets名称为registry-demo               
    --namespace=default \# 值 default 可不写,默认为 default, 不同Namespace,在创建secrets时需要指定Namespace,
    --docker-server=registry.cn-shanghai.aliyuncs.com \#阿里云镜像仓库,公网地址
    --docker-username=hi帐户ID@aliyun.com \   #阿里云的帐号
    --docker-password=vipsoft \            #仓库的密码,在 仓库管理-> 访问凭证中可设置
    --docker-email=xxxx@qq.com               # 用户邮箱
# 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
# kubectl create deployment javademo1 --image=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0 --dry-run -o yaml > javademo1.yaml
W1018 18:49:33.112150   62765 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
# vi javademo1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
    app: javademo1
name: javademo1
spec:
replicas: 1
selector:
    matchLabels:
      app: javademo1
strategy: {}
template:
    metadata:
      creationTimestamp: null
      labels:
      app: javademo1
    spec:
      containers:
      - image: registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0
      name: vipsoft
      resources: {}
      imagePullSecrets:
      - name: registry-demo
status: {}3. 创建容器
# kubectl apply -f javademo1.yaml
deployment.apps/javademo1 created
# kubectl get pods
NAME                         READY   STATUS            RESTARTS   AGE
javademo1-84dd5c9485-8ckk6   0/1   ContainerCreating   0          6s
nginx-f89759699-5hkdw      1/1   Running             0          5d17h
# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
javademo1-84dd5c9485-8ckk6   1/1   Running   0          65s
nginx-f89759699-5hkdw      1/1   Running   0          5d17h
# kubectl get pods -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP         NODE       NOMINATED NODE   READINESS GATES
javademo1-84dd5c9485-8ckk6   1/1   Running   0          111s    10.244.1.4   k8snode1   <none>         <none>
nginx-f89759699-5hkdw      1/1   Running   0          5d17h   10.244.2.2   k8snode2   <none>         <none>
# kubectl scale deployment javademo1 --replicas=3# 扩容3个服务
deployment.apps/javademo1 scaled
# kubectl get pods -o wide
NAME                         READY   STATUS             RESTARTS   AGE   IP         NODE       NOMINATED NODE   READINESS GATES
javademo1-84dd5c9485-7vgkr   0/1   ImagePullBackOff   0          16s   10.244.2.6   k8snode2   <none>         <none>
javademo1-84dd5c9485-8ckk6   1/1   Running            0          6m21s   10.244.1.4   k8snode1   <none>         <none>
javademo1-84dd5c9485-8hfmd   0/1   ImagePullBackOff   0          16s   10.244.2.7   k8snode2   <none>         <none>
nginx-f89759699-5hkdw      1/1   Running            0          5d17h   10.244.2.2   k8snode2   <none>         <none>
# kubectl get pods -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP         NODE       NOMINATED NODE   READINESS GATES
javademo1-84dd5c9485-7vgkr   1/1   Running   0          58s   10.244.2.6   k8snode2   <none>         <none>
javademo1-84dd5c9485-8ckk6   1/1   Running   0          7m3s    10.244.1.4   k8snode1   <none>         <none>
javademo1-84dd5c9485-8hfmd   1/1   Running   0          58s   10.244.2.7   k8snode2   <none>         <none>
nginx-f89759699-5hkdw      1/1   Running   0          5d17h   10.244.2.2   k8snode2   <none>         <none>
# kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort   # 对外暴露端口,不然不能访问
service/javademo1 exposed
# kubectl get svc #查看 service 的运行状态
NAME         TYPE      CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
javademo1    NodePort    10.106.43.46   <none>      8111:31452/TCP   25s
kubernetes   ClusterIP   10.96.0.1      <none>      443/TCP          5d17h
nginx      NodePort    10.103.87.81   <none>      80:30339/TCP   5d17h
# 4. 测试
https://img2022.cnblogs.com/blog/80824/202210/80824-20221019105457925-967373465.jpg
 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。多见于资源不足时导致的驱赶。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Kubernetes(K8S) deployment 拉取阿里云镜像