Kubernetes资源清单定义入门-五
1、k8s中的资源
什么叫资源?
k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象
在k8s中有哪些资源?
工作负载型资源(workload):
Pod ReplicaSet Deployment StatefulSet DaemonSet Job CronJob (ReplicationController在v1.11版本被废弃)
服务发现及负载均衡型资源:
ServiceDiscovery LoadBalance Service Ingress, ...
配置与存储型资源:
Volume(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
特殊类型的存储卷:
ConfigMap(当配置中心来使用的资源类型)Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)
以上这些资源都是配置在名称空间级别。
集群级资源:
Namespace Node Role ClusterRole RoleBinding(角色绑定) ClusterRoleBinding(集群角色绑定)
元数据型资源:
HPA(Pod水平扩展) PodTemplate(Pod模板,用于让控制器创建Pod时使用的模板) LimitRange(用来定义硬件资源限制的)
2、k8s的资源清单
什么是资源清单: 在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单 资源清单的格式: apiVersion: group/apiversion: 如果没有给定group名称,那么默认为croe,可以使用kubectl api-versions 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同) kind: 资源类别 metadata: 资源元数据 name namespace #k8s自身的namespace lables annotations #主要目的是方便用户阅读查找 spec:期望的状态(disired state) status:当前状态,本字段有kubernetes自身维护,用户不能去定义
[root@master ~]# kubectl get pods myapp-9b4987d5-2k86k -o yaml #查看一个pod的信息,以yaml格式输出 [root@master ~]# kubectl explain pod #查看资源定义文档的格式 [root@master ~]# kubectl explain pod.spec #可以一级一级查看
3、创建一个配置清单实例
apiVersion: v1
kind: Pod #定义pod
metadata:
name: pod-demo #pod的名称,全局唯一
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp #容器名称
image: ikubernetes/myapp:v1 #容器镜像
- name: busybox #容器名称
image: busybox:latest #容器镜像
command: #执行的命令
- "/bin/sh"
- "-c"
- "sleep 3600"
[root@master manifests]# kubectl create -f pod.demo.yaml #从文件加载,创建一个pod
[root@master ~]# kubectl describe pods pod-demo #查看pod启动信息
[root@master manifests]# kubectl logs pod-demo busybox #查看一个pod内容器的日志
[root@master ~]# kubectl exec -it pod-demo -c myapp -- /bin/sh #交互式进入pod名字为pod-demo里的myapp容器
[root@master manifests]# kubectl delete -f pod.demo.yaml #删除用这个文件所定义的资源(pod,等)