kubernetes 资源清单
- 资源:对象
- workload(工作负载型):Pod(控制器运行),ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
- 服务发现及均衡:service,Ingress
- 配置与存储:Volume
- ConfigMap,Secret
- DowenwardAPI
- 集群级资源
- Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
- 元数据型资源
- HPA,PodTemplate,LimitRange
获取pod信息并输出位yaml文件
kubectl get pod myapp-xxx -o yaml
apiserver 仅接收JSON格式的资源定义,yaml格式提供配置清单,apiserver可自动将其转化为json格式,而后再提交;
大部分资源的配置清单有5个一级字段组成:
apiVersion:group/version 设定资源所属的api版本,获取当前系统支持的版本使用下面的命令
kubectl api-versions ###标记为beta为公测版本
kind:资源类型,指定标记创建的资源属于什么类型
metadata: 指定资源元数据
name:对象名称
namespace:对象属于哪个名称空间
labels:标签,键值数据
annotations:资源注解
每个资源的引用PATH
/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME ###大写表示需要替换成本机的名称
spec: 定义目标期望的状态,我们希望pod成为什么状态
status:当前状态,由kubernetes集群维护
kubectl explain pod 查看pod资源应该怎么使用清单定义
kubectl explain pod.metadata 查看pod下metadata字段怎么指定
使用yaml文件创建一个Pod中运行两个容器资源,容器存储暂时没有使用同一个共享的存储卷
##文件名称:demo-pod.yaml
apiVersion:v1
kind:Pod
metadata:
name:pod-demo
namespace:default
labels:#键值对 ##写法一{app:myapp}
app:myapp
spec:
nodeSelector: {disktype:ssd} ##节点选择器,指定pod运行在ssd的节点上
nodeName: node1 ###指定运行的节点
containers:
- name:myapp
image:myapp:v1
ports: ##定义暴露的端口
- name: http
containerPort:80
- name:https
containerPort:443
imagePullPolicy: ##Always,Never,IfNotPresent 镜像拉取策略,如果镜像标签是latest 默认Always,其它为IfNotPresent
- name:busybox
image:busybox:latest ##默认运行的命令是 /bin/sh
command: #指定容器运行的命令,列表格式 ##写法1、[“/bin/sh”,"-c","sleep 3600"]
- "/bin/sh"
- "-c"
- "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5"
#使用yaml生成pod
kubectl create -f demo-pod.yaml
kubectl get pods
kubectl logs pod-demo myapp #查看myapp容器的日志信息
kubectl delete pod pod-demo ##删除pod
kubectl delete -f demo-pod.yaml ##删除yaml文件中的pod
kubectl get pods --show-labels
kubectl get pods -L app ##显示标签值
kubectl get pods -l app ##过滤拥有app的pod
kubectl label pods pod-demo release=canary --overwrite #打标签
kubectl get pods -l "release in (canary,app)"
修改镜像中的默认应用
字段:comman,args
- Pod的生命状态:
- 状态: Pending,Running,Failed,Secceeded,Unknown
- Pod生命周期中的重要行为:
- 初始化容器
- 容器探测:
- liveness 探测容器是否存活
- readiness
- restartPolicy: Pod重启策略
Always,OnFailure,Never 默认是Always