首页 > 其他分享 >k8s-pod参数详解

k8s-pod参数详解

时间:2024-06-06 14:00:06浏览次数:17  
标签:busybox name 探针 详解 myapp pod k8s Pod

目录

概述

  k8s中的pod参数详解。官方文档
  版本 k8s 1.27.x 、busybox:stable-musl、nginx:stable-alpine3.19-perl

创建Pod

编写一个简单的Pod

apiVersion: v1
kind: Pod
# 元数据
metadata:
  # pod 名称 唯一
  name: busybox
  # 命名空间
  namespace: test
  # 标签
  labels:
    app: busybox

spec:
  containers:
  - name: busybox
    image: harbor.easzlab.io.local:8443/library/busybox:stable-musl
    imagePullPolicy: IfNotPresent
    command:
      - sleep
      - "3600"
  restartPolicy: Always
[root@hadoop01 pod]# kubectl get pod -n test
NAME                           READY   STATUS    RESTARTS   AGE
busybox                        1/1     Running   0          25s
tomcat-demo-7ddd4cf4f5-bpskf   1/1     Running   0          7d20h

[root@hadoop01 pod]# kubectl exec -it -n test busybox -- sh
/ # 
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # 

添加常用参数

apiVersion: v1
kind: Pod
# 元数据
metadata:
  # pod 名称 唯一
  name: busybox
  # 命名空间
  namespace: test
  # 标签
  labels:
    app: busybox

spec:
  containers:
  - name: busybox
    image: harbor.easzlab.io.local:8443/library/busybox:stable-musl
    # 可选值: Always|IfNotPresent|Never
    imagePullPolicy: IfNotPresent
    # 环境变量
    env:
    - name: app
      value: busybox
    # 运行终端 守护进程,不会运行完就结束
    tty: true
    # 特权模式 对宿主机有 root 权限
    securityContext:
      privileged: true
    # 工作目录
    workingDir: /test
    # 命令
    command: ["/bin/sh"]
    # 参数
    args: ["-c", "while true; do echo hello;sleep 10;done"]
  restartPolicy: Always
[root@hadoop01 pod]# kubectl apply -f arg-busbox-pod.yaml
pod/busybox created
[root@hadoop01 pod]# kubectl get pod -n test
NAME                           READY   STATUS    RESTARTS   AGE
busybox                        1/1     Running   0          7s
tomcat-demo-7ddd4cf4f5-bpskf   1/1     Running   0          7d22h
[root@hadoop01 pod]# kubectl logs -f busybox -n test
hello
hello
hello
hello
hello
hello
hello

为Pod的容器分配资源

apiVersion: v1
kind: Pod
# 元数据
metadata:
  # pod 名称 唯一
  name: busybox
  # 命名空间
  namespace: test
  # 标签
  labels:
    app: busybox

spec:
  restartPolicy: Always
  containers:
  - name: busybox
    image: harbor.easzlab.io.local:8443/library/busybox:stable-musl
    imagePullPolicy: IfNotPresent
    command:
      - sleep
      - "3600"
    resources:
      # 注意MiB 和 Mb 有区别,1MiB=1024k,而1Mb=100k k8s 使用 Mi 大的
      # cpu的单位 ,1c=1000m
      # 最小需要
      requests:
        memory: "100Mi"
        cpu: "1000m"
      # 最大限制
      limits:
        memory: "200Mi"
        cpu: "1000m"

在这里插入图片描述
注意:因为安装的不是 docker ,所以 crictl stats 并不详细
在这里插入图片描述
如 docker stats 能看出资源限制后的变化。
在这里插入图片描述

网络相关

网络默认配置使用的是 k8s 集群的配置。

在这里插入图片描述
自定义网络配置如下:

apiVersion: v1
kind: Pod
# 元数据
metadata:
  # pod 名称 唯一
  name: nginx
  # 命名空间
  namespace: test
  # 标签
  labels:
    app: nginx 

spec:
  # 使用宿主机的网络,与宿主机共享局域网
  hostNetwork: false
  # 可选值:Default | ClusterFirst | ClusterFirstWithHostNet | None
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
    - 8.8.8.8
  # 域名映射
  hostAliases:
    - ip: 192.168.1.18
      hostnames:
      - "foo.local"
      - "bar.local"
  containers:
  - name: nginx
    image: harbor.easzlab.io.local:8443/library/nginx:stable-alpine3.19-perl
    imagePullPolicy: IfNotPresent
    ports:
    - name: default
      containerPort: 80
      # 如果使用hostnetwork 那这里就不能指定端口,配置了也不会生效
      hostPort: 8080

在这里插入图片描述

Pod健康检查

  有一种情况,容器还是正常运行的,但是服务无法使用;这种场景,一般称之为容器死锁,为了能够迟早的发现这种问题,可以通过对容器做健康检查来迟早发现问题。

在这里插入图片描述

  • 启动探针:启动成功之后才是就绪与存活探针,启动失败,会根据策略重启

  • 就绪探针:如初始化 mysql 等,不会重启,会让服务不可用

  • 存活探针:通过 http tcp grpc 等方式验证容器是否可用

  • 探针示例,后续补充

启动探针

spec:
  containers:
  - name: your-container
    startupProbe:
      httpGet:
        path: /healthz
        port: 8080
      failureThreshold: 30
      initialDelaySeconds: 120
      periodSeconds: 10
      timeoutSeconds: 1
      successThreshold: 1

存活探针

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    ports:
    - containerPort: 80
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10

  Liveness探针每10秒检查一次http://myapp-pod:8080/healthz,initialDelaySeconds用于指定探针初次执行前的延迟时间。

就绪探针

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    ports:
    - containerPort: 80
    readinessProbe:
      httpGet:
        path: /readyz
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10

  Readiness探针每5秒检查一次http://myapp-pod:8080/readyz,initialDelaySeconds用于指定探针初次执行前的延迟时间。

作用整个Pod参数配置

在这里插入图片描述

创建docker-registry

kubectl create secret docker-registry regcred \
--docker-server=<你的镜像仓库服务器> \
--docker-username=<你的用户名> \
--docker-password=<你的密码> \
--docker-email=<你的邮箱地址> \
-n test

卷挂载

结束

标签:busybox,name,探针,详解,myapp,pod,k8s,Pod
From: https://blog.csdn.net/2301_79691134/article/details/139418636

相关文章

  • Linux命令格式详解
    Linux命令格式详解在Linux系统中,命令行界面是用户与系统交互的重要方式之一。通过命令行,用户可以执行各种任务,从简单的文件操作到复杂的系统配置。为了更有效地使用命令行,理解Linux命令的基本格式是至关重要的。一、Linux命令的基本结构Linux命令的基本结构通常包括三个部分:命......
  • 详解C和C++的区别
    在学习C++和C语言的过程中,总会分不清两者的区别。在此,做一个总结梳理。首先需要明白的是C语言是面向过程语言(分析解决问题的步骤,并将这些步骤一步一步的实现,使用的时候依次调用);C++是面向对象语言(把问题分解成各个对象,描述某个对象在整个解决问题的步骤中的行为)。面向过程......
  • 进程地址空间详解
    在操作系统中,进程的地址空间是一个非常关键的概念。理解它不仅有助于我们掌握进程间通信和资源分配,还能深入理解操作系统的核心机制。本文将详细讲解进程地址空间的结构、其与物理内存和进程控制块(PCB)的关系,以及页表和写时拷贝(Copy-on-Write)的具体实现。 进程地址空间概述首......
  • k8s 证书过期处理
    问题kubeadm安装的集群默认签发的证书有效期为1年,到期后集群组件之间无法正常通信。证书修复流程1.检查当前证书状态$kubeadmcertscheck-expiration[check-expiration]Readingconfigurationfromthecluster...[check-expiration]FYI:Youcanlookatthisconfig......
  • SQL—数据库查询语言,全面详解演示,入门进阶必会
    文章目录一、基础二、创建表三、修改表四、插入五、更新六、删除七、查询DISTINCTLIMIT八、排序九、过滤十、通配符十一、计算字段十二、函数汇总文本处理日期和时间处理数值处理十三、分组十四、子查询十五、连接内连接自连接自然连接外连接十六、组合查询十七、视图......
  • 机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)
    如何改善模型的表现学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差。现在把它们全部组合起来写成一套指导方针,如何提高学习算法性能的指导方针。所以想要让一个监督学习算法达到实用,基本上希望或者假设可以完成两件事情。首......
  • Mysql 常用命令 详细大全【分步详解】
    1、启动和停止MySQL服务//暂停服务默认80netstopmysql80//启动服务netstartmysql80//任意地方启动mysql客户端的连接mysql-uroot-p2、输入密码 3、数据库4、DDL(DataDefinitionLanguage)数据定义语言,用来定义数据库对象(数据库,表,字段)1......
  • k8s配置节点亲和性yaml示例:根据节点名称来配置节点亲和性(node affinity)
    在Kubernetes中,根据节点名称来配置节点亲和性(nodeaffinity)通常不是直接通过节点名称实现的,而是通过为节点添加特定的标签,然后在Pod的亲和性规则中匹配这些标签。不过,有一种特殊情况是使用NodeAffinity的nodeSelectorTerms中的matchExpressions,通过设置operator为In并使用......
  • k8s - 二进制部署[阿里云]
    概述部署前先了解一下k8s需要的组件和所处的位置,并且为了保证安全,k8s各组件之间通信都需要信任,这就引出了k8s从入门到放弃的证书部署步骤我这次是在阿里云上部署,所以包括了一些云产品云产品介绍eip动态公网ip,和nat网关绑定后,内网服务器才可以访问公网nat网关,所有k8s......
  • Springboot框架开发与实用篇之热部署 2024详解
    开发与实用手动启动热部署热部署(HotDeployment)指的是在应用程序正在运行的情况下,对其进行更新或修改并将这些变更应用到正在运行的应用程序中的过程。通常情况下,传统的部署方式需要停止应用程序、部署更新,然后重新启动应用程序才能使更新生效。而热部署则允许在无需停止应用......