Kubernetes 实战 —— 03. pod: 运行于 Kubernetes 中的容器 (2)

图 3.3 pod 应该包含紧密耦合的容器组(通常是一个主容器和若干支持容器)

除非有特定的原因要求容器是同一个 pod 中的一部分,否则应该在单独的 pod 中运行容器 P58

它们需要一起运行还是可以在不同的主机上运行?

它们代表的是一个整体还是相互独立的组件?

它们必须一起进行扩缩容还是可以分别进行?

图 3.4 容器不应该包含多个进程, pod 也不应该包含多个并不需要运行在同一主机上的容器

以 YAML 或 JSON 描述文件创建 pod P58

通过 YAML 文件定义所有的 Kubernetes 对象之后,还可以将它们存储在版本控制系统中,充分利用版本控制所带来的便利性。 P59

检查现有 pod 的 YAML 描述文件 P59

kubectl get pod -o yam <pod-name> 命令可以查看指定 pod 的完整 YAML 定义。 P59

介绍 pod 定义的主要部分 P59

YAML 中使用的 Kubernetes API 版本

YAML 描述的资源类型

metadata: 包括名称、命名空间、标签和关于该容器的其他信息

spec: 包含 pod 内容的实际说明,例如 pod 的容器、卷和其他数据

status: 包含运行中的 pod 的当前信息,例如 pod 所处的条件、每个容器的描述和状态,以及内部 IP 和其他基本信息

status 包含只读的运行时数据,该数据展示了给定时刻的资源状态。在创建新的 pod 时, status 部分不需要提供

创建一个简单的 YAML 描述文件 P61 # 遵循 v1 版本的 Kubernetes API apiVersion: v1 # 资源类型为 Pod kind: Pod metadata: # pod 的名称 name: kubia-manual spec: containers: # 创建容器所使用的镜像 - image: idealism/kubia # 容器的名称 name: kubia ports: # 应用监听的端口 - containerPort: 8080 protocol: TCP

指定容器端口 P61

在 pod 定义中的端口仅仅是展示性的 (informational) ,忽略它们不影响客户端通过端口连接到 pod 。如果容器通过绑定到地址 0.0.0.0 的端口接受连接,那么即使端口未明确列出在 pod spec 中,其他 pod 也依旧能够连接到该端口。 P61

明确定义端口的意义: P62

每个使用集群的人都可以快速查看每个 pod 对外暴露的端口

允许为每个端口指定一个名称

可以使用 kubectl explain 发现可用的 API 对象字段, kubectl explain pod 可以查看 pod 的 各个属性,然后通过选择对应的属性 (kubectl explain pod.spec) 深入了解每个属性的更多信息。 P62

使用 kubectl create 来创建 pod P63 # kubectl create -f 可以从 YAML 或 JSON 文件创建任何资源,不仅仅是 pod kubectl create -f kubia-manual.yaml # 查看刚刚创建的 kubia-manual 的 完整描述文件 kubectl get pod kubia-manual -o yaml 查看应用程序日志 P64

容器化的应用程序通常会将日志记录到标准输出和标准错误流,而不是写入文件,这就允许用户可以通过简单、标准的方式查看不同应用程序的日志。 P64

docker logs <container> 允许我们查看主机上指定容器的日志

kubectl logs <pod-name> -c <container> 允许我们查看指定 pod 中指定容器的日志,如果该 pod 只包含一个容器,那么 -c <container> 可以省略

当一个 pod 被删除时,它的日志也会被删除。如果希望在 pod 删除之后仍然可以获取其日志,我们需要设置中心化的、集群范围的日志系统,将所有日志存储到中央存储中。 P64

向 pod 发送请求 P65

将本地网络端口转发到 pod 中到端口 P65

kubectl port-forward kubia-manual 8888:8080 可以将本地端口 8888 转发到 kubia-manual pod 到端口 8080 ,这样我们就可以在本地使用 curl localhost:8888 向 pod 发送一个 HTTP 请求。 P65

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydpzz.html