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

kubernetes,k8s,deployment,阿里,镜像,部署 · 浏览次数 : 1487

小编点评

内容生成时需要带简单的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带简单的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带简单的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带简单的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带 simple 的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带 simple 的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带 simple 的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带 simple 的排版,以便更易于理解和阅读。 例如,以下内容可以更加易于理解: ``` 内容:生成时需要带 simple 的排版,以便更易于理解和阅读。 ``` 希望以上信息能帮助您生成内容时更易于理解和阅读。

正文

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。多见于资源不足时导致的驱赶。

 

与Kubernetes(K8S) Deployment 拉取阿里云镜像部署相似的内容:

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

Docker Image 推到阿里云仓库,可以看 SpringBoot Docker 发布到 阿里仓库 1. 阿里镜像仓库加了授权,所以 K8S 拉之前要做下授权处理 [root@k8smaster ~]# kubectl create secret docker-registry registry

Kubernetes(K8S) 拉取镜像 ImagePullBackOff pull access denied

K8S 拉取阿里云镜像 第一次用时,没注意 授权,所以在 kubectl apply 后一直出现 ImagePullBackOff [root@k8smaster ~]# kubectl apply -f javademo1.yaml deployment.apps/javademo1 create

Kubernetes(K8S) 镜像拉取策略 imagePullPolicy

镜像仓库,镜像已更新,版本没更新, K8S 拉取后,还是早的服务,原因:imagePullPolicy 镜像拉取策略 默认为本地有了就不拉取,需要修改 [root@k8smaster ~]# kubectl edit deployment/javademo1 ..... spec: containe

Kubernetes(K8S) Deployment 升级和回滚

创建部署详见 Kubernetes(K8S) Deployment 部署 Pod 传统应用升级,一般是V1.0的jar包,有一个应对 1.0 的 shell 启动脚本。升级时,传 2.0 的 jar包,配置 2.0 的 shell 脚本。 执行顺序为,停1.0的服务,启2.0的服务,有问题时,把2.

Kubernetes(K8S) Controller - Deployment 介绍

什么是controller 实际存在的,管理和运行容器的对象 Pod 和 Controller 关系 Pod 是通过 Controller 实现应用的运维,比如伸缩、滚动升级等等 Pod 和 Controller 之间通过 label 标签建立关系 Deployment 控制器应用场景 场景:Web

Kubernetes(K8S) Controller - StatefulSet、DaemonSet 介绍

无状态和有状态 无状态 Deployment 认为Pod 都是一样的。javademo1-6fb64c4664-dj4dh、javademo1-6fb64c4664-dj54s 它们的内容是一样的。 没有顺序要求,先启第一个还是启第二个无所谓 不用考虑在哪个 node 上运行 随意进行伸缩和扩展 有

k8s优雅停服

在应用程序的整个生命周期中,正在运行的 pod 会由于多种原因而终止。在某些情况下,Kubernetes 会因用户输入(例如更新或删除 Deployment 时)而终止 pod。在其他情况下,Kubernetes 需要释放给定节点上的资源时会终止 pod。无论哪种情况,Kubernetes 都允许在

二进制安装Kubernetes(k8s)v1.30.1

二进制安装Kubernetes(k8s)v1.30.1 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以

DevSecOps 需要知道的十大 K8s 安全风险及建议

Kubernetes (K8s)是现代云原生世界中的容器管理平台。它实现了灵活、可扩展地开发、部署和管理微服务。K8s 能够与各种云提供商、容器运行时接口、身份验证提供商和可扩展集成点一起工作。然而 K8s 的集成方法可以在任何基础设施上运行任何容器化应用程序,这使得围绕 K8s 和其上的应用程序堆

Kubernetes(K8S) Node NotReady 节点资源不足 Pod无法运行

k8s 线上集群中 Node 节点状态变成 NotReady 状态,导致整个 Node 节点中容器停止服务。 一个 Node 节点中是可以运行多个 Pod 容器,每个 Pod 容器可以运行多个实例 App 容器。Node 节点不可用,就会直接导致 Node 节点中所有的容器不可用,Node 节点是否