19-yaml 编排资源
2022-01-09 本文已影响0人
紫荆秋雪_文
任何资源都可以通过 yaml 的方式创建出来
一、查看 k8s 中的资源
kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v1 true HorizontalPodAutoscaler
cronjobs cj batch/v1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
bgpconfigurations crd.projectcalico.org/v1 false BGPConfiguration
bgppeers crd.projectcalico.org/v1 false BGPPeer
blockaffinities crd.projectcalico.org/v1 false BlockAffinity
caliconodestatuses crd.projectcalico.org/v1 false CalicoNodeStatus
clusterinformations crd.projectcalico.org/v1 false ClusterInformation
felixconfigurations crd.projectcalico.org/v1 false FelixConfiguration
globalnetworkpolicies crd.projectcalico.org/v1 false GlobalNetworkPolicy
globalnetworksets crd.projectcalico.org/v1 false GlobalNetworkSet
hostendpoints crd.projectcalico.org/v1 false HostEndpoint
ipamblocks crd.projectcalico.org/v1 false IPAMBlock
ipamconfigs crd.projectcalico.org/v1 false IPAMConfig
ipamhandles crd.projectcalico.org/v1 false IPAMHandle
ippools crd.projectcalico.org/v1 false IPPool
ipreservations crd.projectcalico.org/v1 false IPReservation
kubecontrollersconfigurations crd.projectcalico.org/v1 false KubeControllersConfiguration
networkpolicies crd.projectcalico.org/v1 true NetworkPolicy
networksets crd.projectcalico.org/v1 true NetworkSet
endpointslices discovery.k8s.io/v1 true EndpointSlice
events ev events.k8s.io/v1 true Event
ingresses ing extensions/v1beta1 true Ingress
flowschemas flowcontrol.apiserver.k8s.io/v1beta1 false FlowSchema
prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta1 false PriorityLevelConfiguration
ingressclasses networking.k8s.io/v1 false IngressClass
ingresses ing networking.k8s.io/v1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses node.k8s.io/v1 false RuntimeClass
poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
roles rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers storage.k8s.io/v1 false CSIDriver
csinodes storage.k8s.io/v1 false CSINode
csistoragecapacities storage.k8s.io/v1beta1 true CSIStorageCapacity
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments storage.k8s.io/v1 false VolumeAttachment
二、获取 k8s 中的资源的yaml模板
1、方式一
使用现有的相同类型的资源(my-nginx-6b74b79f57-jqvtb),来获取模板
kubectl get pod my-nginx-6b74b79f57-jqvtb -o yaml
2、方式二
直接通过运行命令来输出自己想要创建的资源
kubectl run my-nginx --image=nginx --dry-run=client -oyaml
3、资源模板说明
apiVersion: v1 # 资源版本
kind: Pod # 资源类型
metadata:
labels:
run: my-nginx
name: my-nginx
spec: # 资源期望状态
containers:
- image: nginx
name: my-nginx
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
4、对象名称
- kubernetes REST API 中,所有的对象都是通过
name
和UID
唯一性确定,可以通过namespace
+name
唯一性地确定一个 RESTFUL 对象
/api/v1/namespaces/{namespace}/pods/{name}
- 同一个名称空间下,同一个类型的对象,可以通过
name
唯一性确定。如果删除该对象之后,可以再重新创建一个同名对象
5、命名空间
- 获取所有命名空间
kubectl get namespaces
- 查看命名空间
kubectl describe namespaces <name>
- 创建名称空间
kubectl create namespace <名称空间的名称>
- 删除名称空间
kubectl delete namespace <名称空间的名称>
- default默认名称空间,如果 kubernetes 对象中不定义
metadata.namespace
字段,该对象将放在此名称空间下 - kube-system kubernetes 系统创建的对象放在此名称空间下
- kube-public 此名称空间自动在安装集群时自动创建,并且所有用户都是可以读取的(即使是那些未登录的用户)。主要是为集群预留的
- 名称空间的名字必须与
DNS
兼容- 不能带小数点
.
- 不能带下划线
_
- 使用数字、小写字母和减号
-
组成的字符串
- 不能带小数点
- 请求时设置名称空间
kubectl get pods --namespace=<insert-namespace-name-here>
- 当创建一个 Service 时,kubernetes 会创建一个相应的
DNS 条目
。该条目的形式是..svc.cluster.local,这意味着如果容器只使用``,它将被解析到本地命名空间的服务。这对于跨多个命名空间(如:开发、分级和生成)使用相同的配置非常有用。如果希望跨命名空间访问,则需要使用完全限定域名
6、标签和选择器
标签(Label)是附加在kubernetes对象上的一组键值对,其意图是按照对用户有意义的方式来标识 kubernetes 对象,同时又不对 kubernetes 的核心逻辑产生影响。标签可以用来组织和选择一组 kubernetes 对象。您可以在创建 kubernetes 对象时为其添加标签,也可以在创建以后再为其添加标签。每个kubernetes对象可以有多个标签,同一个对象的标签的 key 必须唯一
小结:通过熟练使用下面三个命令,玩转所有的yaml写法
- 获取已有资源的yaml写法
kubectl get (已有资源名称) -oyaml
- 获取资源的yaml模板
kubectl create deploy xxx --dry-run-client -oyaml
- 获取某个资源或属性有哪些写法或字段
kubectl explain pod.spec