Welcome to Elvin's blog

1.k8s.资源清单

#k8s常用资源

  • 工作负载:Pod,rs(ReplicasSet),deploy(Deployment),sts(StatefulSet),ds(DaemonSet),Job,Cronjob
  • 服务发现及负载均衡:svc(Service), ing(Ingress)
  • 配置与存储:Volume,pv( persistentvolumes ),pvc,cm(ConfigMap),Secret,DownwardAPI
  • 集群级: ns(Namespace),Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
  • 元数据: HPA,PodTemplate,LimitRange

#资源清单格式

apiVersion: group/apiversion  #API版本
kind:        #资源类型
metadata:    #元数据对象
  name        #如Pod名称
  namespace   #命名空间默认default
  lables      #标签
Spec:        #详细对象
  containers:#容器列表
  - name      #容器名称
    image     #镜像

. #获取 apiversion 版本信息 kubectl api-versions
. #获取字段设置帮助文档 kubectl explain pod kubectl explain pod.kind

主要资源配置清单:

apiVersion,kind,meadata,spec,status

apiVersion

  • 定义API版本,格式为groupname/version
  • 用kubectl api-versions获取当前k8s版本apiVersion信息

kind

  • Kind定义资源类型和角色,如Namespace、Pod、Service、Deployment

metadata

Metadata元数据对象,分为两大类:

  • 名称空间
    namespace:名称空间,默认default
    name:对象名称,名称空间的同一类型中必须唯一
    uid:唯一表示符

  • 常用可选字段
    labels:对象标签,键值数据,常被用作挑选条件
    annotation:作为挑选条件,作为labels的补充
    resourceVersion:当前对象的内部版本标识符
    generation:用于表示当前对象目标状态的代码
    creationTimestamp:当前对象创建日期的时间戳
    deletionTimestamp:当前对象删除日期的时间戳

status 当前状态,k8s集群维护,用户不能修改

spec 详细对象

 #spec常用资源类型
spec.containers.name:pod的名称,必须字段,名称唯一且创建后不可以被修改
spec.containers.image :镜像仓库路径/镜像名称(镜像标签)
spec.containers.image.imagePullPolicy :镜像下载策略
    Always:总是下载
    Never:从不下载
    IfNotPresent:本地没有就下载,默认项
    镜像标签是latest则总会是"Always",且一旦被创建不允许改变
spec.containers.ports:容器公开的端口列表
spec.containers.ports.containerPort:暴露的端口,是额外的信息,对端口是否暴露没影响
spec.containers.ports.hostPort:主机上公开端口
spec.containers.ports.protocol:端口协议TCP或UDP,默认TCP
spec.containers.ports.hostIP:指定要绑定的主机
spec.containers.command:运行程序,类似于docker中的entrypiont,命令不会运行在shell中
spec.containers.args:向docker镜像中传递参数,会替换docker镜像中cmd命令,引用变量使用
spec.containers.volumeMounts.mountPath:容器挂载存储卷的路径,路径不能包含':' 符号
spec.containers.volumeMounts.subPath:容器挂载的存储卷的 子路径
spec.containers.volumeMounts.readOnly:只读,默认为false
spec.containers.resources.limits:资源限制
spec.containers.resources.limits.cpu :CPU上限,可以短暂超过,容器也不会被停止
spec.containers.resources.limits.memory:内存上限
spec.containers.resources.requests:资源需求
spec.containers.resources.requests.cpu:CPU请求, 也是调度 CPU 资源的依据, 可以超过
spec.containers.resources.requests.memory:内存请求,可以超过;超过时容器可能在Node内存不足时清理
spec.containers.workingDir: 容器工作目录
spec.nodeSelector:指定Pod调度节点
spec.restartPolicy:容器重启策略三种 Always(退出就重启)、OnFailure(状态为错误时重启)、Never(不重启)
spec.imagePullSecrets  pull镜像时使用cecrets名称

#实例 通过清单文件创建Pod

# pod-demo.yaml
apiVersion: v1
kind: Pod
metadata:
 name: pod-demo
 namespace: default
 labels:
   app: myapp
spec:
 containers:
 - name: test
   image: busybox:latest
   command:
   - "/bin/sh"
   - "-c"
   - "echo -n 'running at ' && date +%F' '%T && sleep 20"
#创建pod
kubectl create -f  pod-demo.yaml

#查看pod
kubectl get pod pod-demo
kubectl get pod pod-demo -o wide
#查看详情
kubectl describe pod pod-demo
#查看logs
kubectl logs pod-demo -c test

#删除
kubectl delete -f pod-demo.yaml

#pod会反复重启,因为命令sleep 20结束

Blog地址 https://www.cnblogs.com/elvi/p/11755617.html
本文git地址 https://gitee.com/alivv/k8s/tree/master/notes

posted @ 2019-10-28 22:15  blog-elvin-vip  阅读(1643)  评论(0编辑  收藏  举报