一、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