Docker Image 推到阿里云仓库,可以看 SpringBoot Docker 发布到 阿里仓库
1. 阿里镜像仓库加了授权,所以 K8S 拉之前要做下授权处理- [root@k8smaster ~]# 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
- [root@k8smaster ~]# kubectl get secrets
- NAME TYPE DATA AGE
- default-token-q7lps kubernetes.io/service-account-token 3 5d17h
- registry-demo kubernetes.io/dockerconfigjson 1 2m53s
- [root@k8smaster ~]# kubectl describe secrets registry-demo
- Name: registry-demo
- Namespace: default
- Labels: <none>
- Annotations: <none>
- Type: kubernetes.io/dockerconfigjson
- Data
- ====
- .dockerconfigjson: 196 bytes
- [root@k8smaster ~]#
复制代码 解释说明:- [root@k8smaster ~]# 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 # 用户邮箱
- [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- [root@k8smaster ~]# 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.
- [root@k8smaster ~]# 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. 创建容器- [root@k8smaster ~]# kubectl apply -f javademo1.yaml
- deployment.apps/javademo1 created
- [root@k8smaster ~]# kubectl get pods
- NAME READY STATUS RESTARTS AGE
- javademo1-84dd5c9485-8ckk6 0/1 ContainerCreating 0 6s
- nginx-f89759699-5hkdw 1/1 Running 0 5d17h
- [root@k8smaster ~]# kubectl get pods
- NAME READY STATUS RESTARTS AGE
- javademo1-84dd5c9485-8ckk6 1/1 Running 0 65s
- nginx-f89759699-5hkdw 1/1 Running 0 5d17h
- [root@k8smaster ~]# 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>
- [root@k8smaster ~]# kubectl scale deployment javademo1 --replicas=3 # 扩容3个服务
- deployment.apps/javademo1 scaled
- [root@k8smaster ~]# 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>
- [root@k8smaster ~]# 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>
- [root@k8smaster ~]# kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort # 对外暴露端口,不然不能访问
- service/javademo1 exposed
- [root@k8smaster ~]# 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
- [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 | 容器创建中 | PodInitializing | pod初始化中 | DockerDaemonNotReady | docker还没有完全启动 | NetworkPluginNotReady | 网络插件还没有完全启动 | Evicted | 即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。多见于资源不足时导致的驱赶。 |
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |