【Kubernetes系列】认识Pod

259 阅读2分钟

Pod 是 Kubernetes 中最小的管理单位,可以认为 Pod 是一组(一个或多个)应用程序的容器,这些容器共享存储、网络等。

一、基本使用

1. 创建Pod
pod和其它Kubernetes中的资源通常是通过向Kubernetes REST API提供JSON或YAML描述文件来创建的,接下来以定义YAML文件的形式来创建pod。

# 描述文件遵循v1版本的Kubernetes API
apiVersion: v1
# 描述的是一个pod资源
kind: Pod
metadata:
  name: 【pod名称】
spec:
  containers:
  - image: 【镜像名称】
    name: 【容器名称】
    ports:
    - containerPort: 【监听的端口号】
      protocol: TCP

通过命令行从YAML文件(pod-demo.yaml)创建pod

kubectl create -f pod-demo.yaml

2. 查看pod
查看新创建的pod,默认列出命名空间下的pod列表

kubectl get pods

获取pod的完整定义,以YAML格式展示。这里也可以将yaml换成json

kubectl get po pod-demo -o yaml

获取pod详情

kubectl describe pod 【pod名称】

3. 查看pod的日志
kubectl logs 【pod名称】

4. 停止和移除pod
kubectl delete po pod-demo

如果是通过Deployment或者其它方式创建的pod,需要删除对应的pod创建规则,否则pod会被重新创建

二、pod概况

1. pod的生命周期
Pod在整个生命周期中,一共会有5种状态,会体现在pod的status字段上,状态值分别如下:

  • Pending:已被kubenetes接受,但是处于未创建未运行状态;
  • Running:pod中的容器已被创建;
  • Succeeded:pod中的容器已成功终止,且不会重启;
  • Failed:pod中的容器,异常退出或被系统终止;
  • Unknown:无法获取pod状态。

2. pod的重启策略
Pod 的 spec 中包含一个 restartPolicy 字段,该字段定义了pod内容器的重启策略,其可能取值包括:

  • Always:容器失效时自动重启,默认值
  • OnFailure:容器异常终止时重启
  • Never:不重启

kubelet 会按指数回退方式计算容器重启的延迟(10s、20s、40s、...),其最长延迟为 5 分钟。当容器成功执行10分钟后,重置计时器。

pod的调度、扩容缩容等,后续内容补充

参考:kubernetes.io/docs/home/