目录
K8S的资源
分类:
名称空间级别:
使用 kubeadm 安装 k8s 会默认把所有组件放到 kube-system 的空间下去运行,在使用 kubectl get pod 的时候有些 pod 查不到,后面什么都不加的情况下默认为 -n default
1.工作负载型资源:Pod ReplicaSet Deployment StatefulSet Job CronJob
2.服务发现以及均衡负载型资源(ServiceDiscovery LoadBalance): Service Ingress........
3.配置与存储性资源: Volune(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
4.特殊类型的存储卷: ConfigMap(当配置中心来使用的资源类型) Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)
集群级别:
经过定义之后在全集群中都能调用,不管在什么名称空间下去定义,在其他名称空间下都能查询到。
Namespace Node ClusterRole RoleBinding ClusterRoleBinding
元数级别:
通过指标进行操作,例如HPA(根据cpu使用率来操作)
HPA PodTemplate LimitRange
资源清单
在k8s中一般使用yaml格式。不能使用 tab 键,相同层级的元素左侧需要对齐。
yaml支持的数据结构
对象:
键值对的集合,又称为映射/哈希/字典
数组:
一组按照序列排序的值,又称为序列/列表
纯量:
单个的不可在分的值
parent:~ #######在yaml中 ~ 代表 null
date: 2021-10-15
字符串:
不需要 “” 或 ‘’,但如果字符串中有特殊字符或者空格,需要 ‘’ 。如果 ‘’ 中有 ‘’ 需要添加 ‘’ 例如:str: ‘laber’’s day’。
字符串可以写成多行,例如: str:这是一段
多行 #### ‘多’ 和上面的 ‘r’ 对齐
字符段
也可以用:| 或者 > 来换行。| + 表示保留文字块末尾的换行,| - 表示删除。
this: | this: >
is is #### i 和 上面的 t 对齐
book book
k8s常用字段
可以使用 kubectl explain pod/svc.... 来查看具体可以写什么字段。
kubectl explain pod.apiVersion 查看更详细的内容
必须有的属性
version String 指k8s的版本,可以使用kubectl api-versions查询
kind String yaml文件中定义的资源类型和角色,比如pod
metadata Object 元数据对象,固定值就写metadata
metadata.name String 元数据对象的名称,由自己编写,例如pod的名称
metadata..namespace String 元数据对象的名称空间,自己写,如果不写默认default
Spec Object 详细定义对象,固定就写Spec
Spec.containers[] list Spec对象的容器列表定义,是个列表
Spec.containers[].name String 定义容器的名称
Spec.containers[].image String 定义镜像的名称
eg:编写一个资源清单,运行myapp:v1(自己的harbor仓库中有该镜像)
vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp
namespace: default
labels: ###标签
app: myapp
version: v1
spec:
containers:
- name: app
image: myapp:v1
- name: test
image: nginx
无法正常运行,会不断重启,因为在一个pod中 myapp 和 ningx 都使用80 端口。
使用 kubectl describe pod mypod可以看到 test 不断重启。
使用kubectl logs myapp -c test 查看 test 的日志
去除yaml中最下面两行,删掉 mypod,在使用 kubectl apply -f pod.yaml 再一次创建即可。
使用 kubectl get pod -o wide 查看pod具体信息。curl 访问查询的ip