ときに、どのようにどこで使用するとCLAsterAPIとCLAsterAPI Azure(capz)の

7488 ワード

本稿では、カスタムシナリオをテストするために、Azureで自己管理されたKubernetesクラスタを使用する理由、時、および方法について説明します.
Kubernetesはとても大きくて複雑になってきたので、ほとんどの企業は自分自身を実行するのではなく、マネージサービス(例えばAK)を使用したい.管理されたKubernetesサービスを使用することによって、これはKubernetesの最適化、バックアップとアップグレードの代わりに彼らの中心的な能力に集中するために操作チームを解放します.
これは操作上の負担を軽減しますが、プラットフォームを変更する能力を失います.時々、これらは許容できるトレードオフです、時々、あなたはそれをあなた自身で管理する必要があります.
歴史的に、AKエンジンはAzureの上でアンマネージKubernetesクラスタをつくるためのOSSツールでした、しかし、それは若干の制限を持ちました.CAPI/CAPZ is the go-forward solution 自己管理クラスタの作成と操作を宣言します.
私は非常にスコットロウの記事を読むことをお勧めしますAn introduction to CAPI . それはここで使用される用語や概念の多くをカバーしています.
capi/capzを使用する理由の一つは、AzureのKubernetesのテストと開発ツールです.たとえば、次のシナリオを構築してテストする必要があります.
  • 労働者ノードへのカーネル変更
  • 制御プレーンノード上のK 8 S設定への変更
  • 別のCNIのインストール
  • K 8 sを管理するためのK 8 sの使用
  • この図は、スタータcapi/capzクラスタの高レベルアーキテクチャを示す.

    この記事の残りの部分を使用して上記のシナリオを実装する方法を説明しますCAPI quickstart . コマンド引数が時間とともに変化するので、この記事は手順を説明し、このような完全な詳細へのリンクを提供します.
    Link to CAPI Quick Start with details : base command to run

    種類クラスターを作成する


    同様RepRap , CapiはKubernetesクラスタを使用してKubernetesクラスタを作る最も簡単な方法はKubernetes IN Docker (KIND) . 名前が意味するように、それはDockerコンテナとして実行されるKubernetesクラスタです.これは「ブートストラップクラスタ」と呼ぶものの出発点です.
    Create Kind Cluster : kind create cluster

    クラスタの初期化


    このブートストラップクラスタを使用して、すべてのCRDを含み、CAPIコントローラを実行する「管理クラスタ」を初期化します.これは、我々のシナリオを満たすために我々の変化の全てを適用するところです.
    Initialize cluster for Azure : clusterctl init --infrastructure azure

    クラスタ構成の生成


    管理クラスタが準備されているので、ワークロードクラスタがどのように見えるかを定義します.ありがたいことに、我々が選ぶことができる異なる味があります.デフォルトを使用すると、仮想マシンを使用してアンマネージK 8 Sクラスタを取得します.
    Generate cluster configuration : clusterctl generate cluster capi-quickstart > capi-quickstart.yaml現在、ワークロードクラスタを定義するCRDSを含むファイルがあります.私たちはCAPIクイックスタートを変更します.YAMLと我々のシナリオの各々を実装するためにCRDSを編集してください.
    完全なドキュメントはCAPI (baseline) CRDs and CAPZ (Azure specific resources) CRDs .

    シナリオ:ワーキングノードのカーネル変更


    労働者ノードを変更したい場合は、KubeAdmConfigTemplateでprekubeadmcommandとpostbebeadmcommandディレクティブを追加したい場合があります.preKubeadmCommands クラスタに参加する前に、コマンドリストをワーカーノードで実行できます.postKubeadmCommands コマンドの一覧を、クラスタに参加した後のワーカーノードで実行できます.
    apiVersion: bootstrap.cluster.x-k8s.io/v1alpha4
    kind: KubeadmConfigTemplate
    metadata:
      name: capi-quickstart-md-0
      namespace: default
    spec:
      template:
        spec:
          preKubeadmCommands:
            - wget -P /tmp https://kernel.ubuntu.com/<path>.deb
            - dpkg -i /tmp/<package name>.deb
          postKubeadmCommands:
            - reboot
    
    これらの変更を行った後、あなたの管理クラスタにリソースを適用することで、残りの手順に進むことができます.

    Kubernetesコンポーネントを変更する


    コントロールプレーンを変更する場合は、KubeAdmControlPlaneに変更を加えることができます.これにより、様々なコンポーネントをカスタマイズするためにKubeadm APIを活用できます.
    たとえば、Kube ApiServerにフィーチャーゲートを有効にするには、次の手順に従います.
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
    kind: KubeadmControlPlane
    metadata:
      name: capi-quickstart-control-plane
      namespace: default
    spec:
      kubeadmConfigSpec:
        clusterConfiguration:
          apiServer:
            extraArgs:
              feature-gates: MyFeatureGate=true
    
    上記の例は簡潔にいくつかのフィールドを省略します.既存のargsや設定を変更しないようにしてください.
    これらの変更を行った後、あなたの管理クラスタにリソースを適用することで、残りの手順に進むことができます.

    ワークロードクラスタを適用する


    クラスタがどのように見えるかを定義したので、リソースを管理クラスタに適用します.capz演算子は、更新されたリソースを検出し、Azureリソースマネージャーに問い合わせます.
    Apply the workload cluster : kubectl apply -f capi-quickstart.yaml

    クラスタの作成を監視する


    あなたが変更をした後capi-quickstart.yaml リソースを適用し、クラスタを見て準備ができている.
    Watch the cluster creation :
  • kubectl get cluster
  • clusterctl describe cluster capi-quickstart
  • kubectl get kubeadmcontrolplane – コントロールプレーンの確認
  • ワークロードクラスタが稼働している今、それを使用して起動する時間です!

    ワークロードクラスタのKubeconfigを取得する


    現在、我々は2つのクラスタ(AtureのDockerとWorkLoadクラスタの管理クラスタ)を扱っています.簡単に、ローカルディレクトリに保存します.
    Get the Kubeconfig for the workload cluster : clusterctl get kubeconfig capi-quickstart > capi-quickstart.kubeconfig

    CNIをインストールする


    デフォルトでは、ワークロードクラスタにはCNIがなく、インストールされなければなりません.
    Deploy the CNI : kubectl --kubeconfig=./capi-quickstart.kubeconfig apply -f https://...calico.yaml

    シナリオ:別のCNIをインストールする


    あなたがあなたのCNIとしてフランネルを使用したいならば、あなたはあなたのワークロードクラスタをつくるあなたの管理クラスタにリソースを適用することができます.
    しかし、Deploying the CNI , 次の手順を実行できますInstall Flannel walkthrough .

    クリーンアップ


    完了したら、簡単に両方のワークロードと管理クラスタをクリーンアップすることができます.
    クラスタを削除します
    ワークロードクラスタを再度作成する場合は、Capiクイックスタートを再適用することでできます.ヤル
    マネージクラスタの削除
    再度管理クラスタを作成する場合は、最初から起動する必要があります.ワークロードクラスタを削除せずに管理クラスタを削除すると、ワークロードクラスタとAzureリソースが残ります.

    概要


    Kubernetesがどのようにコンテナーを使用してコンテナをオーケストレーションすることができるかに似て、capi/capzは同じことをすることができます、しかし、AzureでKubernetesクラスタのために.
    この記事では、Capi/capzを使用するときのシナリオと、その実装方法についてのチュートリアルを説明しました.
    私は特にCapi/Capzの将来のために興奮しています、そして、それはどのようにGitopsのような他の雲のネイティブの方法論と統合することができますか?
    P . S .私は非常にcecileロバートmichonのGithub ) 本稿の技術指導彼女のサポートなしで、私はこれを遠くまで得ていなかったでしょう、そして、確かにいくつかの主要なシナリオを逃したでしょう.cecileありがとう!