Kubernetes(K8S) Deployment 拉取阿里云镜像部署

简介: Kubernetes(K8S) Deployment 拉取阿里云镜像部署

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 \  # K8S 的命名空间,非阿里云仓库的命名空间,值 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。多见于资源不足时导致的驱赶。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5天前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
借助阿里云ACK One注册集群,充分利用阿里云强大ACS GPU算力,实现DeepSeek推理模型高效部署。
|
1月前
|
供应链 安全 Cloud Native
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
|
7天前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
10天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
本教程演示如何在ACK中使用vLLM框架快速部署DeepSeek R1模型推理服务。
|
11天前
|
存储 人工智能 弹性计算
NVIDIA NIM on ACK:优化生成式AI模型的部署与管理
本文结合NVIDIA NIM和阿里云容器服务,提出了基于ACK的完整服务化管理方案,用于优化生成式AI模型的部署和管理。
|
1天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
1月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
5天前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
2月前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
232 19
|
1月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。

热门文章

最新文章