k8s の Pod

发布时间 2023-11-29 01:20:57作者: 沧海一声笑rush

一、k8s 中的资源和组件

  • 组件是为了支撑 k8s 平台的运行,而提前安装好的软件

  • 资源是如何去使用 k8s 能力的定义,比如 k8s使用 pod 去管理业务应用,那么 pod就是 k8s的一类资源。

先要查看 k8s 下的所有的资源,可以使用如下命令

kubectl api-resources

kubectl api-resources -owide # 更详细命令

组件运行的位置

  1. kubelet 运行在宿主机上,而其他常用组件则运行在 docker 中;

  2. 运行在 宿主机 上的组件,可直接使用 systemd查看,例如: systemctl status kubelet.service

  3. 运行在 docker中的组件,可以直接通过 docker查看,例如:docker ps |grep proxy,查询结果如下:

  4. 如果使用系统命令,查看 docker服务的日志(注意是 docker服务,而不是docker中的进程)。可以使用如下命令查看

journalctl -fu docker.service -o cat

其中 -f 表示跟踪服务器实时输出,-u 指定服务名称,-o 指定输出文件格式,使用 cat 输出时,可以让日志带颜色

二、Pod

为什么要引入 pod

  1. 与容器引擎解耦,例如:docker, crio, containerd and isula

  2. 多容器之间共享 网络存储进程空间,支持的业务场景也更加的灵活。

api-versions

api version 是一个成熟度的体现

apiversion
alpha 进入 Kubernetes 的新功能的早期候选版本。这些可能包含错误,并且不保证将来可以使用。
beta API 版本名称中的 beta 表示测试已经超过了 alpha 级别,并且该功能最终将包含在 Kubernetes 中。 虽然它的工作方式可能会改变,并且对象的定义方式可能会完全改变,
stable 稳定的 apiVersion 这些名称中不包含 alpha 或 beta。 它们可以安全使用。
v1 这是 Kubernetes API 的第一个稳定版本。 它包含许多核心对象。
apps/v1 使用最广泛的版本

查看 k8s 集群的版本信息

使用命令 kubectl version

Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.10", GitCommit:"7e54d50d3012cf3389e43b096ba35300f36e0817", GitTreeState:"clean", BuildDate:"2022-08-17T18:32:54Z", GoVersion:"go1.17.13", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.10", GitCommit:"7e54d50d3012cf3389e43b096ba35300f36e0817", GitTreeState:"clean", BuildDate:"2022-08-17T18:26:59Z", GoVersion:"go1.17.13", Compiler:"gc", Platform:"linux/amd64"}

其中 Client Version 表示 kubectl的版本;Server Version 表示 k8s 集群的版本。

pod 的资源清单

用来定义生成 podyaml 文件,叫做资源清单。如下是一个用于生成 nginx的资源清单

apiVersion: v1
kind: Pod
metadata:
  name: nginxtest
  namespace: zdp
  labels:
    component: nginxtest
spec:
  containers:
  - image: nginx:latest
    name: nginxtest
    ports:
    - containerPort: 80
      protocol: TCP

如果不知道 pod 怎么写,可以使用 kubectl explain pod 命令,查看对应的解释

使用 资源清单创建pod

  1. 创建 zdp 命名空间
kubectl create ns zdp
  1. 查看是否创建成功 kubectl get ns
  2. 通过文件,创建 pod容器
kubectl create -f ./nginx.yaml
  1. 在对应命名空间下,看一下容器状态
kubectl get pods -owide -n zdp

  1. 直接更具 pod 的 ip 地址进行访问
curl 10.233.83.25