一、k8s 中的资源和组件
-
组件是为了支撑
k8s平台的运行,而提前安装好的软件 -
资源是如何去使用
k8s能力的定义,比如k8s使用pod去管理业务应用,那么pod就是k8s的一类资源。
先要查看 k8s 下的所有的资源,可以使用如下命令
kubectl api-resources
kubectl api-resources -owide # 更详细命令

组件运行的位置
-
kubelet运行在宿主机上,而其他常用组件则运行在docker中; -
运行在
宿主机上的组件,可直接使用systemd查看,例如:systemctl status kubelet.service -
运行在
docker中的组件,可以直接通过docker查看,例如:docker ps |grep proxy,查询结果如下:

-
如果使用系统命令,查看
docker服务的日志(注意是 docker服务,而不是docker中的进程)。可以使用如下命令查看
journalctl -fu docker.service -o cat
其中 -f 表示跟踪服务器实时输出,-u 指定服务名称,-o 指定输出文件格式,使用 cat 输出时,可以让日志带颜色
二、Pod
为什么要引入 pod
-
与容器引擎解耦,例如:docker, crio, containerd and isula
-
多容器之间共享
网络、存储、进程空间,支持的业务场景也更加的灵活。
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 的资源清单
用来定义生成 pod 的 yaml 文件,叫做资源清单。如下是一个用于生成 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
- 创建
zdp命名空间
kubectl create ns zdp
- 查看是否创建成功
kubectl get ns

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

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