Kubernetes之三 k8s中的pod

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes之三 k8s中的pod相关的知识,希望对你有一定的参考价值。

参考技术A 在k8s中,Pod是一个容器集合,相当于一组docker,同一pod内所有容器使用IPC相互通信,因为它们共享了IPC,UTS,Network。

下面这张图详述了各个容器间的关系

一 Pod中的各个对象:

kind: 定义资源类型, 例如 deployment,service 等

apiVersion: 定义调用的 API 版本, 所支持的版本可以通过 kubectl  API-resources 查看

metadata: 资源提供源数据信息, 如名称, 隶属的名称空间和标签等

spec: 用于定义用户期望的状态, 不同的资源类型

Status: 记录活动对象的当前状态信息, 由 k8s 系统自行维护, 对用户来说为只读字段

二 如何创建pod

kubectl create:

(1)kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的

(2)kubectl create命令,用同一个yaml 文件执行替换replace命令,将会不成功,fail掉。

kubectl apply:

  kubectl apply命令,根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性

# 相关资源的命令查询:

kubectl explain pods(.spec.tolerations....)

# 导出 pod 对应的 YAML 模版:

kubectl  get pod web YAML --export> web.YAML

三镜像拉取方式imagePullPolicy

k8s的配置文件中经常看到有imagePullPolicy属性,这个属性是描述镜像的拉取策略

Always 总是拉取镜像

IfNotPresent 本地有则使用本地镜像,不拉取

Never 只使用本地镜像,从不拉取,即使本地没有

如果省略imagePullPolicy 镜像tag为 :latest 策略为always ,否则 策略为 IfNotPresent

四 pod中的网络代理方式

Service方式: 申明 NodePort 类型, 可以通过任意节点访问,可以实现负载均衡功能

hostPort方式: hostPort是直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的IP加上来访问Pod了

hostNetwork方式: 共享宿主机的网络名称空间

五 创建pod

以下面的yaml创建pod,命令为kubectl create -f firstpod.yaml ,在创建之前,需要pull镜像busybox

apiVersion: v1

kind: Pod

metadata:

  name: first-pod

spec:

  containers:

  - name: bash-container

    image: docker.io/busybox

kubectl explain pods.status 可查看pod的resource

以上是关于Kubernetes之三 k8s中的pod的主要内容,如果未能解决你的问题,请参考以下文章

如何滚动重启pod而不改变kubernetes(k8s)中的部署yaml?

Kubernetes (K8S)决定弃用 Docker!Kubernetes (K8S)学习详解

[K8s]Kubernetes-存储(上)

Kubernetes 中的远程 EJB

一起来入门Kubernetes(k8s)

Kubernetes(K8s)之Job控制器