美文网首页云原生
19-yaml 编排资源

19-yaml 编排资源

作者: 紫荆秋雪_文 | 来源:发表于2022-01-09 15:55 被阅读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 中,所有的对象都是通过nameUID 唯一性确定,可以通过 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

相关文章

网友评论

    本文标题:19-yaml 编排资源

    本文链接:https://www.haomeiwen.com/subject/dqtkcrtx.html