web-dev-qa-db-ja.com

kubectlを使用してデーモンセットを作成しますか?

私はCKA試験を受けましたが、そこでかなり長い間Daemonsetsを操作する必要がありました。 k8sリソースのyamlマニフェストを作成するよりも、kubectlですべてを実行する方がはるかに高速であるため、kubectlを使用してDaemonsetリソースを作成できるかどうか疑問に思っていました。

少なくとも今のところ、通常のkubectl create daemonsetを使用して作成することは不可能です。そして、ドキュメントにはそれの説明はありません。しかし、おそらくそれを別の方法で行う方法はありますか?

私が今できる最善のことは、最初にkubectl create deploymentのようにDeploymentを作成し、その出力マニフェストを編集することです。ここにオプションはありますか?

8
Adilet Maratov

CKAは K8Sドキュメント へのアクセスを許可します。そのため、そこからさまざまなリソースのサンプルYAMLを取得できるはずです。 ここ は、K8SドキュメントのDaemonset用のものです。

また、認証環境がkube-system名前空間のリソースにアクセスできるかどうかも不明です。はいの場合、以下のコマンドを使用してDaemonsetのサンプルyamlを取得します。

kubectl get daemonsets kube-flannel-ds-AMD64 -o yaml -n = kube-system> daemonset.yaml

6
Praveen Sripati

最速のハックは、を使用して展開ファイルを作成することです

kubectl create deploy nginx --image=nginx --dry-run -o yaml > nginx-ds.yaml

nginx-ds.yamlの行kind: Deploymentkind: DaemonSetに置き換え、行replicas: 1を削除します

ただし、次のコマンドは、「apps/v1」がクラスター内のDaemonSetに使用されるAPIであることを考慮して、クリーンなデーモンセットマニフェストを提供します

kubectl create deploy nginx --image=nginx --dry-run -o yaml | \
    sed '/null\|{}\|replicas/d;/status/,$d;s/Deployment/DaemonSet/g' > nginx-ds.yaml

あなたはあなたのnginx DaemonSetを持っています。

6
zaman sakib

それは不可能だ。少なくともKubernetes 1.12の場合。唯一のオプションは、サンプルのDaemonset yamlファイルを取得してそこから移動することです。

2
Adilet Maratov

コマンドを使用してデプロイメントを作成および変更すると、デーモンセットを非常に迅速に作成できます。以下は、daemonsetを作成するための1行のコマンドです

kubectl create deployment elasticsearch --namespace=kube-system  --image=k8s.gcr.io/fluentd-elasticsearch:1.20 --dry-run -o yaml | grep -v "creationTimestamp\|status" | awk '{gsub(/Deployment/, "DaemonSet"); print }'
0
Shambu

Kubernetesアーキテクチャを利用して、既存のクラスターからDaemonSetの定義を取得できます。 kube-proxyをご覧ください。これは、クラスターの各ノードで実行されるネットワークコンポーネントです。 enter image description herekube-proxyDaemonSetとしてデプロイされるため、以下のコマンドでその定義を抽出できます。

$ kubectl get ds kube-proxy -n kube-system -o yaml > kube-proxy.ds.yaml

警告!kube-proxyからDaemonSetの定義を抽出することによってそれに気づく:

  1. しなやかにクリーンアップする必要があります!
  2. ApiVersionをextensions/v1beta1からapps/v1に変更する必要があります
0
Lukasz Dynowski

kubectlを使用してDaemonSetを作成するオプションはありません。しかし、それでも、DaemonSetの基本的な設定を含むYamlファイルを準備できます。 daemon-set-basic.yamlkubectl create -f daemon-set-basic.yamlを使用して作成します

kubectl edit daemonset <name-of-the-daemon-set>を使用して、新しいDaemonSetを編集できます。または、Yamlファイルを変更し、kubectl apply -f daemon-set-basic.yamlによって変更を適用します。構成変更ファイルを更新してapplyコマンドを使用する場合は、DaemonSetを作成するときにapplyではなくcreateを使用することをお勧めします。

簡単なDaemonSetの例を次に示します。

kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      containers:
      - name: fluentd-elasticsearch
        image: k8s.gcr.io/fluentd-elasticsearch:1.20
0
Artem Golenyaev