四、k 8 sクラスタリソースリスト定義の入門

6281 ワード

目次
  • リソースオブジェクト
  • リソースを作成する方法
  • インベントリヘルプコマンド
  • テストリスト
  • を作成する
  • リソースの3つの作成方法
  • リソースオブジェクト

  • workload:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob
  • サービス発見と均衡:Service,Ingress
  • 構成とストレージ:Volume,CSI,ConfigMap,Secret,DownwardAPI
  • クラスタリソース:Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
  • メタデータ型リソース:HPA,PodTemplate,LimitRange
  • リソースの作成方法


    apiserver:JSON形式のリソース定義のみを受け入れます.
    yamlフォーマットを使用して構成リストを提供し、apiserverは自動的にJSONフォーマットに変換してから実行することができる.
    ほとんどのリソースの構成リスト:
  • apiVersion: group/version

  • $ kubectl api-versions
  • kindリソースカテゴリ(pod,service,deploymentなど)
  • metadata:メタデータ
  • name同じnamespaceの下でnameは唯一のnamespaceネーミングスペースlabelsラベルでなければなりません.各リソースにはラベルannotationsリソース注釈があります.
    3.spec:ユーザが望むターゲット状態、disired state
    4.status:現在の状態は、spec状態に無限に近づくべきで、current state、このフィールドはkubernetesクラスタによって維持されます.ユーザーはカスタマイズできません.

    インベントリヘルプコマンド

    kubectl explainを使用して、インベントリに必要なヘルプを表示できます.
    次のようになります.
    [root@master ~]# kubectl explain pod
    KIND:     Pod
    VERSION:  v1
    
    DESCRIPTION:
         Pod is a collection of containers that can run on a host. This resource is
         created by clients and scheduled onto hosts.
    
    FIELDS:
       apiVersion   
         APIVersion defines the versioned schema of this representation of an
         object. Servers should convert recognized schemas to the latest internal
         value, and may reject unrecognized values. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
    
       kind 
         Kind is a string value representing the REST resource this object
         represents. Servers may infer this from the endpoint the client submits
         requests to. Cannot be updated. In CamelCase. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
    
       metadata (   )
         Standard object's metadata. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    
       spec   ( == )
         Specification of the desired behavior of the pod. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
    
       status   (k8s , , , )
         Most recently observed status of the pod. This data may not be up to date.
         Populated by the system. Read-only. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

    ここではpodの第1層を表示し、==metadata==の情報を見たい場合はpodを直接使用します.metadataは引き続き表示します
    次のようになります.
    [root@master ~]# kubectl explain pod.metadata
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: metadata 
    
    DESCRIPTION:
         Standard object's metadata. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    
         ObjectMeta is metadata that all persisted resources must have, which
         includes all objects users must create.
    
    FIELDS:
       annotations  
         Annotations is an unstructured key value map stored with a resource that
         may be set by external tools to store and retrieve arbitrary metadata. They
         are not queryable and should be preserved when modifying objects. More
         info: http://kubernetes.io/docs/user-guide/annotations
    
       clusterName  
         The name of the cluster which the object belongs to. This is used to
         distinguish resources with same name and namespace in different clusters.
         This field is not set anywhere right now and apiserver is going to ignore
         it if set in create or update request.
    
       creationTimestamp    
         CreationTimestamp is a timestamp representing the server time when this
         object was created. It is not guaranteed to be set in happens-before order
         across separate operations. Clients may not set this value. It is
         represented in RFC3339 form and is in UTC. Populated by the system.
         Read-only. Null for lists. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
         .......
         .......
         #  

    このように推すとすべてそうである.
  • kubectl explain pod.spec
  • kubectl explain pod.status

  • 分類:各後に対応するフィールドがあります.
    を選択します.
    説明する
    例を挙げる
    string
    文字列
    文字列
    []string
    文字列リスト
    文字列タイプの配列を入力する必要があります
    map[string]string
    ビュー文字列
    多くのk:vタイプのデータが必要です
    Object
    オブジェクト
    ネストする必要がある次のフィールドについて説明します.
    []Object
    オブジェクトリスト
    ネストする必要がある次のフィールドが複数あることを示します.
    - required -
    必須項目
    これが発生した場合、このパラメータに記入する必要があります.

    テストリストの作成

    pod-demo.yamlのファイルを作成します.内容は次のとおりです.
  • 注意事項
  • 注意大文字と小文字
  • リストに「-」を付ける必要があります.一般的な同級は
  • を使用します.
    [root@master manifests]# cat pod-demo.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-demo
      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"
    kubectl createコマンドを使用してファイルをロードします.
    [root@master manifests]# kubectl create -f pod-demo.yaml 
    pod/pod-demo created
    [root@master manifests]# kubectl get pods -o wide
    NAME                            READY   STATUS    RESTARTS   AGE     IP           NODE                NOMINATED NODE   READINESS GATES
    pod-demo                        2/2     Running   0          20s     10.244.3.8   node01.kubernetes              

    正常に起動していることがわかります.
    このpodを削除するには、kubectl deleteを用いてpod-demo.yamlを操作してもよい.
    [root@master manifests]# kubectl delete -f pod-demo.yaml 
    pod "pod-demo" deleted

    リソースの3つの作成方法

    kubernetesのリソースには、3つの作成方法があります.
    1、1つ目は前の記事で、コマンドで作成
    2、2つ目は、この記事で説明した、構成リスト式の使い方です.コマンド・リソース・リストとも呼ばれます
    3、3つ目は声明式資源リストで、3つ目は2つ目のリスト方式に似ている.
    宣言式を使用すると、リソースができるだけ私たちに宣言した状態が変化することを確保し、私たちはいつでも声明を変更し、いつでも適用することができます.