pod进阶(代码片段)

l-dongf l-dongf     2023-01-13     705

关键词:

一、Pod生命周期

  • init container:初始化容器,可以有多个
  • main container:主容器
  • post start:在初始化容器执行完后,主容器启动前的操作
  • pre stop:结束前的清理操作
  • liveness probe:在主容器运行是进行存活性检测
  • rediness probe:就绪状态检测

1、Pod的生命周期状态

  • Pending:挂起,没有合适的节点运行
  • Running:运行态
  • Failed:失败态
  • Succeeded:成功态
  • Unknown:未知态

2、创建Pod时

pod生命周期中的重要行为

  • 初始化容器
  • 容器探测
    • liveness:探测pod中容器是否正常
      • restartPolicy:Always(只要容器挂了就重启), OnFailure(只要容器发生错误时重启), Never(从来不会重启),默认为Always
    • readiness:探测是否可以正常提供服务

探针类型

  • ExecAction
  • TCPSocketAction
  • HTTPGetAction

二、存活性探测

# vim liveness-exec.yaml
apiVersion: v1
kind: Pod
metadata:
  name: liveness-exec-pod
  namespace: default
spec:
  containers:
  - name: liveness-exec-container
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c","touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 3600"]
    livenessProbe:
      exec:
        command: ["test","-e","/tmp/healthy"]
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl create -f liveness-exec.yaml

三、http的存活性探测

apiVersion: v1
kind: Pod
metadata:
  name: livenessi-httpget-pod
  namespace: default
spec:
  containers:
  - name: liveness-httpget-container
    image: dongfeimg/myapp:v1
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    livenessProbe:
      httpGet:
        port: http
        path: /index.html
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl describe pod livenessi-httpget-pod
# kubectl exec -it livenessi-httpget-pod -- /bin/sh

四、就绪性探测

# kubectl create -f readness-httpget-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: readness-httpget-pod
  namespace: default
spec:
  containers:
  - name: readness-httpget-container
    image: dongfeimg/myapp:v1
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    readinessProbe:
      httpGet:
        port: http
        path: /index.html
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl exec -it readness-httpget-pod -- /bin/sh
/ # rm -f /usr/share/nginx/html/index.html

五、启动后钩子

# vim poststart-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: poststart-pod
  namespace: default
spec:
  containers:
  - name: busybox-httpd
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh","-c","mkdir -p /data/web/html"]
    command: ["/bin/sh","-c","sleep 3600"]
# kubectl create -f poststart-pod.yaml

command中的命令不能强依赖与postStart中的command所执行的结果

未完待续。。。

kubernetes第七篇:pod进阶controller进阶resource和dashboard(代码片段)

文章目录一、前言二、Pod进阶学习之路2.1Pod的生命周期Lifecycle2.2Pod的重启策略RestartPolicy2.3静态Pod2.4Pod的健康检查2.5ConfigMap2.5.1ConfigMap的创建创建方式1:命令行创建configmap创建方式2:根据配置文件中创建configmap创建方式3&#... 查看详情

kubernetes进阶训练营pod基础(代码片段)

Pod基础K8s架构图组件kube-apiserverkube-controller-managerkube-controller-manageerkube-schedulerkubeletkube-proxykubectl核心资源对象PodLabelDeploymentService集群部署环境准备使用kubeadm部署Kubernetes初始化集群添加节点清理资源清单Pod原理Pod的生命周期 查看详情

二进制部署k8s集群进阶使用之第4节pod控制器(代码片段)

四、pod控制器controller用于控制pod控制器主要分为:ReplicationController(相当于ReplicaSet的老版本,现在建议使用Deployments加ReplicaSet替代RC)ReplicaSet副本集,控制pod扩容,裁减Deployments控制pod升级,回退StatefulSets部署有状态的pod应用DaemonSet运行... 查看详情

k8s进阶(代码片段)

K8s进阶文章目录K8s进阶核心组件HPAserviceAddOns附件dnspodpod容器分类控制器类型以及功能部署Kubernetes准备环境所有节点安装Docker/kubeadm/kubelet安装Docker添加kubernetes阿⾥云YUM软件源安装kubeadm,kubelet和kubectl部署Kubernetes安装Pod网络... 查看详情

kubernetes进阶训练营pod基础(代码片段)

...期Pod状态重启策略初始化容器InitCPodHookPod健康检查Pod使用进阶Pod资源配置静态PodDownwardAPI环境变量Volume挂载K8s架构图从上面我们可以看出Kubernetes由Master和Node两种节点组成,这两种角色分别对应着控制节点和工作节点(可... 查看详情

client-gogin的简单整合三(list列表相关再进阶关于pods)(代码片段)

背景:紧接client-gogin的简单整合二(list列表相关进一步操作),namespacedeploymentservice都list列表展现了,总觉得还少点什么?比如显示集群中所有运行的pod列表?根据namespace显示pod列表?按照deployment名称... 查看详情

k8s之pod进阶(代码片段)

注意此篇文章接上篇:K8s之Pod资源管理及创建Harbor私有镜像仓库https://blog.51cto.com/14464303/2471369一、资源限制:pod和container的资源请求和限制:spec.containers[].resources.limits.cpu#cpu上限spec.containers[].resources.limits.memory#内存上限spec.contain... 查看详情

kubernetes进阶训练营调度器(代码片段)

调度流程kube-scheduler的主要作用就是根据特定的调度算法和调度策略将Pod调度到合适的Node节点上去,是一个独立的二进制程序,启动之后会一直监听APIServer,获取到PodSpec.NodeName为空的Pod,对每个Pod都会创建一个bin... 查看详情

kubernetes进阶训练营调度器(代码片段)

调度流程kube-scheduler的主要作用就是根据特定的调度算法和调度策略将Pod调度到合适的Node节点上去,是一个独立的二进制程序,启动之后会一直监听APIServer,获取到PodSpec.NodeName为空的Pod,对每个Pod都会创建一个bin... 查看详情

kubernetes进阶训练营控制器(代码片段)

控制器前面我们一起学习了Pod的原理和一些基本使用,但是在实际使用的时候并不会直接使用Pod,而是会使用各种控制器来满足我们的需求,Kubernetes中运行了一系列控制器来确保集群的当前状态与期望状态保持一致&#... 查看详情

kubernetes系列k8s进阶容器和pod分配内存资源(代码片段)

作者:半身风雪上一节:ConfigMap进阶环境变量的配置及使用内容简介:上一节主要学习ConfigMap环境变量的配置及使用、ConfigMapvolume中的数据处理,那么本节内容主要容器和Pod分配内存资源。容器和Pod分配内存资源... 查看详情

k8s进阶(代码片段)

K8s进阶文章目录K8s进阶核心组件HPAserviceAddOns附件dnspodpod容器分类控制器类型以及功能部署Kubernetes准备环境所有节点安装Docker/kubeadm/kubelet安装Docker添加kubernetes阿⾥云YUM软件源安装kubeadm,kubelet和kubectl部署Kubernetes安装Pod网络... 查看详情

kubernetes基础(代码片段)

Kubernetes基础文章目录Kubernetes基础Pod是什么?Pod的作用Pod控制器LabelLabel为什么要用LabelLabel选择器NodeKubernetes集群架构masternode(worker节点)Kubernetes的特性Kubernetes进阶核心组件HPAserviceAddOns附件dnspod部署Kubernetes安 查看详情

kubernetes进阶训练营网络(代码片段)

网络Service三种IP定义Servicekube-proxy服务类型获取客户端IPDNS给Pod添加DNS记录Ingress资源对象定义rulesResourcepathTypeIngressClassTLSIngress-nginx运行原理安装第一个示例❤Nginx配置BasicAuthURLRewrite灰度发布HTTPS全局配置TCP与UDPTraefikGatewayAPIAPISIX 查看详情

kubernetes进阶训练营网络(代码片段)

网络Service三种IP定义Servicekube-proxy服务类型获取客户端IPDNS给Pod添加DNS记录Ingress资源对象定义rulesResourcepathTypeIngressClassTLSIngress-nginx运行原理安装第一个示例❤Nginx配置BasicAuthURLRewrite灰度发布HTTPS全局配置TCP与UDPTraefikGatewayAPIAPISIX 查看详情

kubernetes进阶训练营网络(代码片段)

网络Service三种IP定义Servicekube-proxy服务类型获取客户端IPDNS给Pod添加DNS记录Ingress资源对象定义rulesResourcepathTypeIngressClassTLSIngress-nginx运行原理安装第一个示例❤Nginx配置BasicAuthURLRewrite灰度发布HTTPS全局配置TCP与UDPTraefikGatewayAPIAPISIXSe... 查看详情

devops架构师--03kubernetes进阶实践(代码片段)

文章目录第三天Kubernetes进阶实践ETCD常用操作Kubernetes调度为何要控制Pod应该如何调度调度的过程CordonNodeSelectornodeAffinity污点(Taints)与容忍(tolerations)Kubernetes集群的网络实现CNI介绍及集群网络选型,Flannel网络模... 查看详情

kubernetes进阶训练营调度器(代码片段)

调度流程kube-scheduler的主要作用就是根据特定的调度算法和调度策略将Pod调度到合适的Node节点上去,是一个独立的二进制程序,启动之后会一直监听APIServer,获取到PodSpec.NodeName为空的Pod,对每个Pod都会创建一个bin... 查看详情