Pod
用yml
建立一个Pod#
选定一个位置并创建文件
1
2
3cd /home/echin
mkdir pods/
touch nginx-demo.yaml撰写
yml
文件1
vim nginx-demo.yaml
yaml
文件不用背,直接让GPT生成吧,感觉自己写的总是有问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
当然可以。以下是一个简单的 Kubernetes Pod 的 YAML 配置示例,它定义了一个运行 Nginx Web 服务器的 Pod:
apiVersion: v1 # 使用的 Kubernetes API 版本
kind: Pod # 资源类型为 Pod
metadata:
name: nginx-pod # Pod 的名称
namespace: default # Pod 所在的命名空间,默认为 default
labels: # 为 Pod 设置标签,可以用于选择器
app: nginx
spec: # Pod 的详细规格定义
containers: # 容器列表,Pod 中至少有一个容器
- name: nginx-container # 容器的名称
image: nginx:latest # 容器使用的镜像,这里使用 Nginx 的最新版本
ports: # 容器暴露的端口列表
- containerPort: 80 # 容器内部监听的端口,Nginx 默认为 80
protocol: TCP # 端口协议,可以是 TCP 或 UDP
# 如果需要设置资源限制和请求,可以添加如下:
resources:
requests:
cpu: 100m # CPU 请求,表示该容器至少需要 100 毫核
memory: 100Mi # 内存请求,表示该容器至少需要 100MiB 内存
limits:
cpu: 500m # CPU 限制,表示该容器最多使用 500 毫核
memory: 200Mi # 内存限制,表示该容器最多使用 200MiB 内存
# 如果需要设置环境变量,可以添加如下:
env:
- name: "ENV_VAR_NAME" # 环境变量名称
value: "ENV_VAR_VALUE" # 环境变量值
# 如果 Pod 需要重启策略,可以添加如下:
restartPolicy: Always # Pod 重启策略,Always 表示始终重启 Pod
# 如果需要设置节点选择器,可以添加 nodeSelector 字段:
# nodeSelector:
# disktype: ssd依据
yml
生成pod
1
Kubectl create -f nginx-demo.yaml
查看是否建立成功
1
kubectl get pods
查看
pod
的具体信息1
kubectl describe po nginx-pod
删除
pod
1
kubectl delete po nginx-pod
探针#
是用来监控Pod中的状态,从而执行各种事情,有三种探针:
LivenessProbe
如果容器挂掉了,探针监听到我们的容器挂掉了,他会帮助我们容器重新启动,即故障自动恢复
ReadinessProbe
当容器部署到Pod中时,有时候并不是初始化成功的,比如说要数据的导入等事情
而这个探针就是会检测到容器初始化成功后,才允许外部来发流量请求接口
StartupProbe
启动探针,优先执行这个探针,判断是否容器启动
有三种探针执行方式
ExecAction
在容器内部执行一个命令,如果返回值时0,着任务容器正常健康
TCPSocketAction
通过 tcp 连接检测容器内端口是否开放,如果开放则健康
HTTPGetAction
发送HTTP请求到容器内的应用进程,如果状态码正常,则应用健康
如何使用 <— 点击这里
生命周期#
主要是通过
postStart 钩子函数
这个函数基本上不用,因为在容器开始运行的时候会运行一堆
command
会初始化preStop 钩子函数
在容器结束运行后,可以做一些数据清理,数据销毁,注册中心下的事情
删除流程
Endpoint
删除pod
的ip
地址Pod
变成Terminating
状态 (相当于有一段时间内可以干自己未干完的事情)- 执行
preStop
的指令
但是#
其实针对于原生的pod
来操作是不方便的
一般来说创建和控制是用其他东西实现的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Echin の 博客!