K8S(1)Pod

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: K8S(1)Pod

一、Pod概述


  • Pod是Kubernetes中最小的单元,它由一组、一个或多个容器组成
  • 每个Pod包含了一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收管理,通过Pause容器可以使同一个Pod里面的多个容器共享存储、网络、PID、IPC等。


二、Pod基础


  • 在K8S中,通常使用YAML文件格式来管理资源对象,下面来看一个关于Pod YAML的示例:


apiVersion: v1 # 必选,API的版本号
kind: Pod    # 必选,类型Pod
metadata:    # 必选,元数据
 name: nginx  # 必选,符合RFC 1035规范的Pod名称
 namespace: default # 可选,Pod所在的命名空间,不指定默认为default,可以使用-n 指定namespace 
 labels:    # 可选,标签选择器,一般用于过滤和区分Pod
  app: nginx
  role: frontend # 可以写多个
 annotations: # 可选,注释列表,可以写多个
  app: nginx
spec:  # 必选,用于定义容器的详细信息
 initContainers: # 初始化容器,在容器启动之前执行的一些初始化操作
 - command:
  - sh
  - -c
  - echo "I am InitContainer for init some configuration"
  image: busybox
  imagePullPolicy: IfNotPresent
  name: init-container
 containers:  # 必选,容器列表
 - name: nginx # 必选,符合RFC 1035规范的容器名称
  image: nginx:latest  # 必选,容器所用的镜像的地址
  imagePullPolicy: Always   # 可选,镜像拉取策略
  command: # 可选,容器启动执行的命令
  - nginx 
  - -g
  - "daemon off;"
  workingDir: /usr/share/nginx/html    # 可选,容器的工作目录
  volumeMounts:  # 可选,存储卷配置,可以配置多个
  - name: webroot # 存储卷名称
   mountPath: /usr/share/nginx/html # 挂载目录
   readOnly: true    # 只读
  ports: # 可选,容器需要暴露的端口号列表
  - name: http  # 端口名称
   containerPort: 80   # 端口号
   protocol: TCP # 端口协议,默认TCP
  env:  # 可选,环境变量配置列表
  - name: TZ   # 变量名
   value: Asia/Shanghai # 变量的值
  - name: LANG
   value: en_US.utf8
  resources:   # 可选,资源限制和资源请求限制
   limits:    # 最大限制设置
    cpu: 1000m
    memory: 1024Mi
   requests:   # 启动所需的资源
    cpu: 100m
    memory: 512Mi
#  startupProbe: # 可选,检测容器内进程是否完成启动。注意三种检查方式同时只能使用一种。
#   httpGet:   # httpGet检测方式,生产环境建议使用httpGet实现接口级健康检查,健康检查由应用程序提供。
#      path: /api/successStart # 检查路径
#      port: 80
  readinessProbe: # 可选,健康检查。注意三种检查方式同时只能使用一种。
   httpGet:   # httpGet检测方式,生产环境建议使用httpGet实现接口级健康检查,健康检查由应用程序提供。
      path: / # 检查路径
      port: 80    # 监控端口
  livenessProbe: # 可选,健康检查
   #exec:    # 执行容器命令检测方式
      #command: 
      #- cat
      #- /health
  #httpGet:    # httpGet检测方式
  #  path: /_health # 检查路径
  #  port: 8080
  #  httpHeaders: # 检查的请求头
  #  - name: end-user
  #   value: Jason 
   tcpSocket:  # 端口检测方式
      port: 80
   initialDelaySeconds: 60    # 初始化时间
   timeoutSeconds: 2   # 超时时间
   periodSeconds: 5   # 检测间隔
   successThreshold: 1 # 检查成功为2次表示就绪
   failureThreshold: 2 # 检测失败1次表示未就绪
  lifecycle:
   postStart: # 容器创建完成后执行的指令, 可以是exec httpGet TCPSocket
    exec:
     command:
     - sh
     - -c
     - 'mkdir /data/ '
   preStop:
    httpGet:   
       path: /
       port: 80
   # exec:
   #  command:
   #  - sh
   #  - -c
   #  - sleep 9
 restartPolicy: Always  # 可选,默认为Always
 #nodeSelector: # 可选,指定Node节点
 #   region: subnet7
 imagePullSecrets:   # 可选,拉取镜像使用的secret,可以配置多个
 - name: default-dockercfg-86258
 hostNetwork: false  # 可选,是否为主机模式,如是,会占用主机端口
 volumes:   # 共享存储卷列表
 - name: webroot # 名称,与上述对应
  emptyDir: {}  # 挂载目录
    #hostPath:       # 挂载本机目录
    # path: /etc/hosts

- 编写yaml文件


  • 现在来写一个nginx pod的yaml文件:


vi pod.yaml     #定义一个pod
apiVersion: v1  #必选,api版本号,通常是v1
kind: Pod       #必选,类型为pod
metadata:       #必选,元数据
  name: nginx   #必选,符合RFC 1035规范的pod名称
  labels:       #可选,标签选择器,一般用于过滤和区分pod,可以写多个注释,键值对类型
    app: nginx
    role: frontend 
  annotations:  #可选,注释列表,可以写多个,键值对类型
    app: nginx
spec:           #必选,定义容器的详细信息
  containers:   #必选容器列表
  - name: nginx #必选符合RFC 1035规范的容器名称
    image: nginx:1.15.2                 #必选,容器使用的镜像的名称
    imagePullPolicy: IfNotPresent       #可选,镜像拉取策略,ifNotPresent为当主机有这个镜像就不拉取了,没有则拉取
    command:              #可选,容器启动时命令,不指定则使用镜像打包时的启动命令
    - nginx 
    - -g
    - "daemon off;"
    workingDir: /usr/share/nginx/html   #可选,容器的工作目录,不指定则使用镜像打包时的默认目录
    ports:        #可选,容器需要暴露的端口号列表
    - name: http            #端口名称
      containerPort: 80     #端口号
      protocol: TCP         #端口协议
    env:          #可选,配置环境变量,可写多个
    - name: TZ              #变量名称
      value: Asia/Shanghai  #变量值
    - name: LANG        
      value: en_US.utf8
  restartPolicy: Always   #可选,容器重启策略,always为容器不管什么原因终止,都进行重启


- 创建、查看pod


  • 创建pod


[root@master1 yn-wxb-app]# kubectl create -f test.yaml
pod/nginx created


  • 查看pod


[root@master1 yn-wxb-app]# kubectl get pods -A  #查看所有命名空间的pod
NAMESPACE     NAME                                       READY   STATUS              RESTARTS   AGE
default       nginx                                      0/1     ContainerCreating   0          59s
kube-system   calico-kube-controllers-57546b46d6-qx4vm   1/1     Running             1          6d
kube-system   calico-node-gr2hd                          1/1     Running             1          6d
kube-system   calico-node-rdrwb                          1/1     Running             0          5d3h
kube-system   coredns-7ff77c879f-hl7mf                   1/1     Running             1          6d
kube-system   coredns-7ff77c879f-tv8tx                   1/1     Running             1          6d
kube-system   etcd-master1                               1/1     Running             1          6d
kube-system   kube-apiserver-master1                     1/1     Running             1          6d
kube-system   kube-controller-manager-master1            1/1     Running             1          6d
kube-system   kube-proxy-drmds                           1/1     Running             1          6d
kube-system   kube-proxy-z9nd7                           1/1     Running             0          5d3h
kube-system   kube-scheduler-master1                     1/1     Running             2          6d
[root@master1 yn-wxb-app]# kubectl get pods  #默认查看defaults命名空间的pod,因为yaml文件没有指定,所以创建的pod默认就是defaults命名空间的
NAME    READY   STATUS              RESTARTS   AGE
nginx   0/1     ContainerCreating   0          63s


  • 查看pod的标签
[root@master1 yn-wxb-app]# kubectl get pod --show-labels       #查看当前defaults命名空间所有pod标签
NAME    READY   STATUS             RESTARTS   AGE     LABELS
nginx   0/1     ImagePullBackOff   0          2m23s   app=nginx,role=frontend
[root@master1 yn-wxb-app]# kubectl get pod --show-labels -A   #查看所有命名空间pod的标签
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     LABELS
default       nginx                                      1/1     Running   0          3m50s   app=nginx,role=frontend
kube-system   calico-kube-controllers-57546b46d6-qx4vm   1/1     Running   1          6d      k8s-app=calico-kube-controllers,pod-template-hash=57546b46d6
kube-system   calico-node-gr2hd                          1/1     Running   1          6d      controller-revision-hash=64fbccd6f7,k8s-app=calico-node,pod-template-generation=1
kube-system   calico-node-rdrwb                          1/1     Running   0          5d3h    controller-revision-hash=64fbccd6f7,k8s-app=calico-node,pod-template-generation=1
kube-system   coredns-7ff77c879f-hl7mf                   1/1     Running   1          6d      k8s-app=kube-dns,pod-template-hash=7ff77c879f
kube-system   coredns-7ff77c879f-tv8tx                   1/1     Running   1          6d      k8s-app=kube-dns,pod-template-hash=7ff77c879f
kube-system   etcd-master1                               1/1     Running   1          6d      component=etcd,tier=control-plane
kube-system   kube-apiserver-master1                     1/1     Running   1          6d      component=kube-apiserver,tier=control-plane
kube-system   kube-controller-manager-master1            1/1     Running   1          6d      component=kube-controller-manager,tier=control-plane
kube-system   kube-proxy-drmds                           1/1     Running   1          6d      controller-revision-hash=9875f5fb,k8s-app=kube-proxy,pod-template-generation=1
kube-system   kube-proxy-z9nd7                           1/1     Running   0          5d3h    controller-revision-hash=9875f5fb,k8s-app=kube-proxy,pod-template-generation=1
kube-system   kube-scheduler-master1                     1/1     Running   2          6d      component=kube-scheduler,tier=control-plane
  • 根据标签筛选出符合条件的pod,其实就是筛选拥有指定标签的pod
[root@master1 yn-wxb-app]# kubectl get pod -l app=nginx  #查看标签
NAME    READY   STATUS             RESTARTS   AGE
nginx   0/1     ImagePullBackOff   0          3m15s
[root@master1 yn-wxb-app]# kubectl get pod -l component=etcd -A  #加-A查看所有命名空间的pod
NAMESPACE     NAME           READY   STATUS    RESTARTS   AGE
kube-system   etcd-master1   1/1     Running   1          6d
[root@master1 yn-wxb-app]# kubectl get pod -l component=etcd  #这里看不到就是因为默认是defaults命名空间
No resources found in default namespace.

注意:默认创建的pod在命名空间default中,也可以将pod创建到其它命名空间


- 删除pod


  • 删除pod


[root@master01 ~]# kubectl delete pod nginx -n dgf  #-n 指定命名空间


删除pod的流程:


  1. Pod状态会变成Terminating状态(这种状态停留时间默认30秒)
  2. 在30秒期间,会从Endpoint中删除该Pod的IP地址
  3. 最后执行yaml文件中PreStop中的指令


三、命名空间基础操作


  • 查看命名空间
[root@master1 yn-wxb-app]# kubectl get ns
NAME              STATUS   AGE
default           Active   6d
kube-node-lease   Active   6d
kube-public       Active   6d
kube-system       Active   6d
[root@master1 yn-wxb-app]# kubectl get ns -A
NAME              STATUS   AGE
default           Active   6d
kube-node-lease   Active   6d
kube-public       Active   6d
kube-system       Active   6d
  • 创建新的test命名空间


[root@master1 yn-wxb-app]# kubectl create ns test
namespace/test created


  • 将pod运行在指定命名空间中
[root@master1 yn-wxb-app]# kubectl create -f test.yaml -n test  #使用-n或者在yaml文件中指定,都可以指定pod的命名空间
pod/nginx created
[root@master1 yn-wxb-app]# kubectl get pod -n test  #-n指定查看的命名空间的pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          13s
[root@master1 yn-wxb-app]# kubectl get pod -A  #-A查看所有命名空间的pod
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
default       nginx                                      1/1     Running   0          14m
kube-system   calico-kube-controllers-57546b46d6-qx4vm   1/1     Running   1          6d
kube-system   calico-node-gr2hd                          1/1     Running   1          6d
kube-system   calico-node-rdrwb                          1/1     Running   0          5d3h
kube-system   coredns-7ff77c879f-hl7mf                   1/1     Running   1          6d
kube-system   coredns-7ff77c879f-tv8tx                   1/1     Running   1          6d
kube-system   etcd-master1                               1/1     Running   1          6d
kube-system   kube-apiserver-master1                     1/1     Running   1          6d
kube-system   kube-controller-manager-master1            1/1     Running   1          6d
kube-system   kube-proxy-drmds                           1/1     Running   1          6d
kube-system   kube-proxy-z9nd7                           1/1     Running   0          5d3h
kube-system   kube-scheduler-master1                     1/1     Running   2          6d
test          nginx                                      1/1     Running   0          18s
  • 删除指定命名空间中的pod


[root@master1 yn-wxb-app]# kubectl get pod -n test
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          50s
[root@master1 yn-wxb-app]# kubectl delete pod nginx -n test
pod "nginx" deleted
[root@master1 yn-wxb-app]# kubectl get pod -n test
No resources found in test namespace.


  • 删除命名空间
[root@master1 yn-wxb-app]# kubectl delete ns test  #删除指定命名空间
namespace "test" deleted
[root@master1 yn-wxb-app]# kubectl get ns
NAME              STATUS   AGE
default           Active   6d
kube-node-lease   Active   6d
kube-public       Active   6d
kube-system       Active   6d
[root@master1 yn-wxb-app]# kubectl get ns -A
NAME              STATUS   AGE
default           Active   6d
kube-node-lease   Active   6d
kube-public       Active   6d
kube-system       Active   6d

四、健康检查(Pod探针)概述


健康检查又称为Pod探针(Probe),探针是由kubelet对容器执行的定期诊断


- Pod探针的三种规则


  • StartupProbe


K8S 1.16版本后新加的探测方式,主要针对不能确定具体启动时间的pod,配置了StartupProbe探测方式后,在StartupProbe探测状态为Success成功之前,其他的所有探测方式都处于无效状态,只有StartupProbe探测方式状态为Success成功,其他探测方式才会生效,


注意:如果StartupProbe状态为失败,kubelet将会杀死容器,容器会按照restartPolicy重启策略进行重启


如果没有配置StartupProbe探测方式,那么状态默认就是Success成功


  • LivenessProbe(存活探针)


此探针用于判断容器是否正在运行,即是否需要重启,如果探测失败,kubelet会杀死容器并根据restartPolicy重启策略进行相应处理,如果没有配置该探针,那么状态默认就是Success


  • ReadinessProbe(可读性探针、就绪性探针)


此探针判断容器是否准备好接收请求,也就是判断pod是否能够提供正常服务,一般用于探测容器内的程序是否健康,它的返回值如果为success,那么就代表这个容器已经完成启动,并且程序已经是可以接受流量的状态,如果没有配置,则状态默认为success


注意:上面的探针可以同时定义,在readinessProbe探针检测成功之前,Pod的running状态是不会变成 ready 状态的


- Pod探针的检测方式


ExecAction


在容器内执行一个命令,如果返回值为0,则认为容器健康


TCPSocketAction


通过TCP连接,检查容器内的端口通信是否是正常,正常则认为容器是健康的


HTTPGetAction


利用HTTP GET请求,通过应用程序暴露的API地址来检查程序是否是正常的,如果状态码为200~399之间,则认为容器健康。


注意:检测的是路径上的文件是否存在


上面的探测方式在每次探测后都会获取下面三种状态之一:


成功:容器通过了检测

失败:容器没有通过检测

未知:检测失败,不会采取任何操作


五、示例


  • 根据上面的nginx yaml文件进行更改:
apiVersion: v1  #必选,api版本号,通常是v1
kind: Pod       #必选,类型为pod
metadata:       #必选,元数据
  name: nginx   #必选,符合RFC 1035规范的pod名称
  labels:       #可选,标签选择器,一般用于过滤和区分pod,可以写多个注释,键值对类型
    app: nginx
    role: frontend
  annotations:  #可选,注释列表,可以写多个,键值对类型
    app: nginx
spec:           #必选,定义容器的详细信息
  containers:   #必选容器列表
  - name: nginx #必选符合RFC 1035规范的容器名称
    image: nginx:1.15.2                 #必选,容器使用的镜像的名称
    imagePullPolicy: IfNotPresent       #可选,镜像拉取策略,ifNotPresent为当主机有这个镜像就不拉取了,没有则拉取
    command:              #可选,容器启动时命令,不指定则使用镜像打包时的启动命令
    - nginx
    - -g
    - "daemon off;"
    workingDir: /usr/share/nginx/html   #可选,容器的工作目录,不指定则使用镜像打包时的默认目录
    ports:        #可选,容器需要暴露的端口号列表
    - name: http            #端口名称
      containerPort: 80     #端口号
      protocol: TCP         #端口协议
    env:          #可选,配置环境变量,可写多个
    - name: TZ              #变量名称
      value: Asia/Shanghai  #变量值
    - name: LANG
      value: en_US.utf8
  restartPolicy: Always   #可选,容器重启策略,always为容器不管什么原因终止,都进行重启


- ExecAction


[root@master1 ~]# cat test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
    role: frontend
  annotations:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.15.2
    imagePullPolicy: IfNotPresent
    command:
    - nginx
    - -g
    - "daemon off;"
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: TZ
      value: Asia/Shanghai
    - name: LANG
      value: en_US.utf8
  livenessProves:
    exec:             #命令检测
      command:
      - curl 127.0.0.1   #访问本地,nginx是否成功启动
    failureThreshold: 1
    initialDelaySeconds: 5
    periodSeconds: 5
restartPolicy: Always
#注释
存活探针'livenessProves'写在与'containers'同一级,下面来看存活探针中包含的配置:
(1)'initialDelaySeconds':容器启动,探针延后工作,默认是0秒,即kubelet在执行第一次探测前,会延迟等待n秒后开始探测,这里配置的意思是第一次探测在容器启动5秒之后才会开始执行,默认是0秒,最小值为0
(2)'periodSeconds':探测检测周期,用于指定kubelet执行存活探针的周期时间,默认为10秒,最小值为1秒,这里配置为5秒探测一次
(3)'failureThreshold':当探针检测为失败时,k8s在放弃之前重试的次数,默认为3,最小值为1,'存活探测的放弃是指重启容器,而就绪探测的放弃是指pod会打上未就绪的标签'
(4)'timeoutSeconds':指定探针检测超时后等待多少秒,默认值为1,最小值为1,'需要注意:在Kubernetes 1.20版本之前,exec 探针会忽略timeoutSeconds探针会无限期地持续运行,甚至可能超过所配置的限期,直到返回结果为止'
#创建pod
[root@master1 ~]# kubectl create -f test.yaml
pod/nginx created
[root@master1 ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
default       nginx                                      1/1     Running   0          2s
kube-system   calico-kube-controllers-57546b46d6-qx4vm   1/1     Running   1          8d
kube-system   calico-node-gr2hd                          1/1     Running   1          8d
kube-system   calico-node-rdrwb                          1/1     Running   0          7d6h
kube-system   coredns-7ff77c879f-hl7mf                   1/1     Running   1          8d
kube-system   coredns-7ff77c879f-tv8tx                   1/1     Running   1          8d
kube-system   etcd-master1                               1/1     Running   1          8d
kube-system   kube-apiserver-master1                     1/1     Running   1          8d
kube-system   kube-controller-manager-master1            1/1     Running   1          8d
kube-system   kube-proxy-drmds                           1/1     Running   1          8d
kube-system   kube-proxy-z9nd7                           1/1     Running   0          7d6h
kube-system   kube-scheduler-master1                     1/1     Running   2          8d

- HTTPGetAction

[root@master1 ~]#vim test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
    role: frontend
  annotations:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.15.2
    imagePullPolicy: IfNotPresent
    command:
    - nginx
    - -g
    - "daemon off;"
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: TZ
      value: Asia/Shanghai
    - name: LANG
      value: en_US.utf8
    livenessProbe:
      httpGet:    #http检测
        path: /index.html
        port: http
      failureThreshold: 1
      initialDelaySeconds: 5
      periodSeconds: 5
  restartPolicy: Always
[root@master1 ~]# kubectl create -f test.yaml
pod/nginx created
[root@master1 ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
default       nginx                                      1/1     Running   0          2s
kube-system   calico-kube-controllers-57546b46d6-qx4vm   1/1     Running   1          8d
kube-system   calico-node-gr2hd                          1/1     Running   1          8d
kube-system   calico-node-rdrwb                          1/1     Running   0          7d6h
kube-system   coredns-7ff77c879f-hl7mf                   1/1     Running   1          8d
kube-system   coredns-7ff77c879f-tv8tx                   1/1     Running   1          8d
kube-system   etcd-master1                               1/1     Running   1          8d
kube-system   kube-apiserver-master1                     1/1     Running   1          8d
kube-system   kube-controller-manager-master1            1/1     Running   1          8d
kube-system   kube-proxy-drmds                           1/1     Running   1          8d
kube-system   kube-proxy-z9nd7                           1/1     Running   0          7d6h
kube-system   kube-scheduler-master1                     1/1     Running   2          8d

- TCPSocketAction

[root@master1 yn-wxb-app]# cat test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
    role: frontend
  annotations:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.15.2
    imagePullPolicy: IfNotPresent
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: TZ
      value: Asia/Shanghai
    - name: LANG
      value: en_US.utf8
    livenessProbe:
      tcpSocket:     #tcp检测
        port: http
      failureThreshold: 1
      initialDelaySeconds: 5
      periodSeconds: 5
  restartPolicy: Always
[root@master1 yn-wxb-app]# kubectl create -f test.yaml
pod/nginx created
[root@master1 yn-wxb-app]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   1          8s

- 就绪探针

[root@master1 yn-wxb-app]# cat test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
    role: frontend
  annotations:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.15.2
    imagePullPolicy: IfNotPresent
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: TZ
      value: Asia/Shanghai
    - name: LANG
      value: en_US.utf8
    readinessProbe:    #就绪探针
      httpGet:
        port: http
        path: /index.html
      failureThreshold: 1
      initialDelaySeconds: 5
      periodSeconds: 5
  restartPolicy: Always
[root@master1 yn-wxb-app]# kubectl create -f test.yaml
pod/nginx created
[root@master1 yn-wxb-app]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   0/1     Running   1          2s


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
10天前
|
存储 Kubernetes 调度
【赵渝强老师】什么是Kubernetes的Pod
Pod 是 Kubernetes 中的基本逻辑单位,代表集群上的一个应用实例。它可以由一个或多个容器组成,并包含数据存储和网络配置等资源。Pod 支持多种容器执行环境,如 Docker。Kubernetes 使用 Pod 管理容器,具有简化部署、方便扩展和调度管理等优点。视频讲解和图示详细介绍了 Pod 的组成结构和使用方式。
|
10天前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
10天前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
10天前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
10天前
|
Kubernetes 容器 Perl
【赵渝强老师】K8s中Pod中的初始化容器
Kubernetes的Pod包含业务容器、基础容器、初始化容器和临时容器。初始化容器在业务容器前运行,用于执行必要的初始化任务。本文介绍了初始化容器的作用、配置方法及优势,并提供了一个示例。
|
10天前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
|
13天前
|
Kubernetes Nacos 微服务
探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题
本文深入探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题。通过检查Pod状态、事件、配置,调整Nacos和Kubernetes设置,以及手动干预等步骤,帮助开发者快速定位并解决问题,确保服务稳定运行。
36 2
|
10天前
|
存储 Kubernetes 调度
深入理解Kubernetes中的Pod与Container
深入理解Kubernetes中的Pod与Container
19 0
|
10天前
|
Kubernetes Java 调度
Kubernetes中的Pod垃圾回收策略是什么
Kubernetes中的Pod垃圾回收策略是什么
|
10天前
|
存储 Kubernetes 调度
深度解析Kubernetes中的Pod生命周期管理
深度解析Kubernetes中的Pod生命周期管理

推荐镜像

更多