Azure開発者が知っておくべきトップ5つの事柄:Kubernetesインフラストラクチャ
14080 ワード
歴史レッスン時間!2011年に、MicroServicesは雲に適している建築様式としてデビューしました.2013年に、Dockerは建築容器を簡素化しました.コンテナとマイクロサービスを組み合わせることは、アプリケーションがどのように構築されて、クラウドで分配されるかにおける変化を引き起こしました.性能、スケーリング、および信頼性が増加する懸念となったので、コンテナ・オーケストレーションプラットホームは広く利用可能になりました.Kubernetesはコミュニティと企業支持を通して支配的なコンセンサス・オーケストレーションになりました、そして、いくつかはそれがinevitable . Azureを含むすべての主要なクラウドサービスプロバイダは、Kubernetesのバージョンを提供しています.
Kubernetesはコンテナの展開と管理を合理化し、アプリケーションをスケールし、アクセスできるようにします.KubernetesをAzureで設定し展開する方法を示します.
あなたがKubernetesの概念と用語に精通していない場合は、取得Kubernetesシリーズは、高速にあなたを得ることができます. Getting Started With Kubernetes: Clusters and Nodes Getting Started With Kubernetes: Application Basics Getting Started With Kubernetes: Advanced Deployment Getting Started with Kubernetes: Stateful Applications Getting Started With Kubernetes: Networking Getting Started With Kubernetes: Day 2
Azure Kubernetes Service(AK)は、ホストしているKubernetesサービスです.AzureはKubernetesのマスターノードを管理し、エージェントや労働者ノードの管理に責任があります.アプリケーションを構成するクラスタ内の労働者ノードを支払うだけです.
Kubernetesノードは、物理的または仮想的であるワーカーマシンです.AKノードは、Azure仮想マシン(VMS)を使用しますそして、ストレージを追加することができますクラスタコンポーネントをアップグレードするか、さらに混合オペレーティングシステムで複数のノードプールを実行します.
AKクラスタを作成できます 紺碧のCLI Azureポータル パワーシェル テンプレートAzure Resource Manager ( ARM )テンプレート.
Kubernetesの設定と展開は複雑です.AKは、次の機能を含むプロセスを簡素化するために多くの機能を提供します クラスタノードとPODスケーリングは、リソース要求の変更としてノードまたはポップの数を調整します.Pods can scale horizontally, and the cluster can also autoscale . Kubernetesは、迅速なオープンソースプロジェクトであり、AKは複数のバージョンをサポートしています.あなたはupgrade the cluster nodes アプリケーションを中断せずに. あなたが機械学習を実行するならば、AKはつくることができますGPU-enabled node pools 計算集約,グラフィックス集約,可視化作業負荷について AKはアクセス制御をKubernetes RBAC アジュールActive Directory . 統合ロギングとモニタリングAzure Monitor for Containers コンテナ、ノード、およびコントローラからのメモリとプロセッサのメトリックを収集します. あなたをマウントするstatic or dynamic storage volumes 永続的なデータ.ストレージボリュームは、同時のpodアクセスのために単一のpodアクセスまたはazureファイルのためにazureディスクを使用します.
Virtual networking クラスタと他のノードのポッドの場合は、ピーリングされた仮想ネットワークを使用できます.また、ネットワークはHTTPアプリケーションルーティングでアプリケーションのためにIngressを提供します. ヘルムとAのための開発ツールとの統合Visual Studio Code extension for Kubernetes 開発者の経験を向上させます. ストレージを含むDocker画像のサポートAzure Container Registry , 配備をより簡単にします.
AKUクラスタを設定して展開する手順を説明するために、Azureポータルを使用します.
Step 1 : Kubernetesサービスを作成します.
開けるAzure Portal を選択します.
「コンテナ」を選択します.
を選択します.
ステップ2 : AZクラスタを作成します.
この例では、基本的なウィンドウでいくつかのオプションを設定しますが、ほとんどのオプションでデフォルトを使用します. サブスクリプションでは、Azureサブスクリプションを選択します. を作成または選択Resource Group . クラスタの詳細では、Kubernetesクラスタ名を設定します. 必要に応じて領域を変更します. 次のノードプールを選択します.
ステップ3 :ノードプールを設定します.
ノードプールは、ノードの論理的なグループ化です.プール内のノードは、異なる仮想マシン、異なるKubernetesバージョン、およびその他の属性を持つことができます.ワークフローをグループ化するなど、さまざまな目的のために異なるノードプールを使用することができます.たとえば、生産のためのノードプールとdevまたはtestの1つです.
この例では、ノードプールに既定値を使用します.
ステップ4 :認証を構成します.
Kubernetesクラスタへのアクセスを認証、認証、セキュリティー、コントロールすることができます
Kubernetes role-based access control ( Kubernetes RBAC )サービスアカウントへのアクセスを許可するか、
Azure Active Directory integration これは、マルチテナント、クラウドベースのディレクトリとアイデンティティ管理サービスを提供します. この例の認証を構成するには、認証メソッドをシステム割り当てのマネージIDに設定します.ロールベースのアクセス制御(RBAC)を有効にすることができますが、例には不要です.ノードプールOSディスク暗号化タイプのデフォルト値を使用します.
ステップ5 :ネットワーク設定
AKはどちらでも使えます
Kubenetで、Azureは仮想ネットワークを作成して、構成します.しかし、ノードだけはルーティング可能なIPアドレスを受け取ります、そして、PODSはAKクラスタの外で資源と通信するためにNATを使用します.このアプローチは、あなたが使用するポッドのためにあなたのネットワーク・スペースで予約する必要があるIPアドレスの数を減らします.
この例では、
ステップ6 :配備を完了する
を選択します.展開に数分かかる.完了すると、配置の詳細を確認またはクラスタに接続を選択できます.
ステップ7 :クラスタに接続する
あなたのクラスタを管理することができます
を使用してクラスタに接続し、認証するコマンドをコピーして貼り付けますAzure CLI .
接続し、クラスタに認証後、使用することができます
Azureポータルを使用してAKSクラスタを作成するプロセスをレビューしたので、コードを使用してプロセスを繰り返すことができます.
ステップ1:作成
Pythonでの例
設定オプションを設定します
残りのパラメータはKubernetesバージョンを設定し、RBACを有効にし、 Pythonでの例
エー
Pythonでの例
私たちは
AKを展開するための完全なコードはGithubTypescript , Python , Go , and C# .
Azure Kubernetesサービスを使用すると、迅速かつ効率的にKubernetesクラスタを展開することができます.AKUE展開は、マスターノードがAzureによって提供されるので、労働者ノードを構成します.Azure Portalは構成のための簡略化されたインターフェースを提供します、しかし、あなたが配備の上に細かい穀物管理を望むならば、コードとしての基盤はオプションです.これは、構成がアプリケーション展開のチューニングを必要とする生産展開に特に当てはまります.
次の記事では、さまざまなメソッドを使用してAKSクラスタにアプリケーションを配備します.
Kubernetesはコンテナの展開と管理を合理化し、アプリケーションをスケールし、アクセスできるようにします.KubernetesをAzureで設定し展開する方法を示します.
Kubernetesレビュー
あなたがKubernetesの概念と用語に精通していない場合は、取得Kubernetesシリーズは、高速にあなたを得ることができます.
アジュールKerbernetesサービス
Azure Kubernetes Service(AK)は、ホストしているKubernetesサービスです.AzureはKubernetesのマスターノードを管理し、エージェントや労働者ノードの管理に責任があります.アプリケーションを構成するクラスタ内の労働者ノードを支払うだけです.
Kubernetesノードは、物理的または仮想的であるワーカーマシンです.AKノードは、Azure仮想マシン(VMS)を使用しますそして、ストレージを追加することができますクラスタコンポーネントをアップグレードするか、さらに混合オペレーティングシステムで複数のノードプールを実行します.
AKクラスタを作成できます
AK機能
Kubernetesの設定と展開は複雑です.AKは、次の機能を含むプロセスを簡素化するために多くの機能を提供します
Virtual networking クラスタと他のノードのポッドの場合は、ピーリングされた仮想ネットワークを使用できます.また、ネットワークはHTTPアプリケーションルーティングでアプリケーションのためにIngressを提供します.
AzureポータルでAKクラスタを作成する
AKUクラスタを設定して展開する手順を説明するために、Azureポータルを使用します.
Step 1 : Kubernetesサービスを作成します.
開けるAzure Portal を選択します.
「コンテナ」を選択します.
を選択します.
ステップ2 : AZクラスタを作成します.
この例では、基本的なウィンドウでいくつかのオプションを設定しますが、ほとんどのオプションでデフォルトを使用します.
ステップ3 :ノードプールを設定します.
ノードプールは、ノードの論理的なグループ化です.プール内のノードは、異なる仮想マシン、異なるKubernetesバージョン、およびその他の属性を持つことができます.ワークフローをグループ化するなど、さまざまな目的のために異なるノードプールを使用することができます.たとえば、生産のためのノードプールとdevまたはtestの1つです.
この例では、ノードプールに既定値を使用します.
ステップ4 :認証を構成します.
Kubernetesクラスタへのアクセスを認証、認証、セキュリティー、コントロールすることができます
Kubernetes role-based access control ( Kubernetes RBAC )サービスアカウントへのアクセスを許可するか、
Azure Active Directory integration これは、マルチテナント、クラウドベースのディレクトリとアイデンティティ管理サービスを提供します.
ステップ5 :ネットワーク設定
AKはどちらでも使えます
kubenet
or Azure CNI
ネットワーキングKubenetは、AKクラスタ作成のためのデフォルトの設定です.Kubenetで、Azureは仮想ネットワークを作成して、構成します.しかし、ノードだけはルーティング可能なIPアドレスを受け取ります、そして、PODSはAKクラスタの外で資源と通信するためにNATを使用します.このアプローチは、あなたが使用するポッドのためにあなたのネットワーク・スペースで予約する必要があるIPアドレスの数を減らします.
Azure CNI
すべてのpodにIPアドレスを割り当てます.IPアドレスは事前にユニークで計画されなければなりません.各々のノードは、ノードにつきIPアドレスを予約するためにPODの最大数のために構成されなければなりません.ポッドの数のための会計なしで、ネットワークはより大きなサブネットでクラスタを再構築する必要を割り当てるか、必要とするのにIPアドレスを使い果たすことができます.この例では、
kubenet
それは簡単ですが、生産Azure Cniのアプリケーションのためのより良い選択.ステップ6 :配備を完了する
を選択します.展開に数分かかる.完了すると、配置の詳細を確認またはクラスタに接続を選択できます.
ステップ7 :クラスタに接続する
あなたのクラスタを管理することができます
kubectl
, Kubernetesを管理するためのコマンドラインツール.インストールできますkubectl
on linux , macOS , and Windows .を使用してクラスタに接続し、認証するコマンドをコピーして貼り付けますAzure CLI .
接続し、クラスタに認証後、使用することができます
kubectl
クラスタを照会するにはkubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-agentpool-19694923-vmss000000 Ready agent 9m35s v1.20.7
aks-agentpool-19694923-vmss000001 Ready agent 9m39s v1.20.7
aks-agentpool-19694923-vmss000002 Ready agent 9m47s v1.20.7
kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 11m
あなたのAKクラスタが展開され、実行されます.コードでAKクラスタを展開する
Azureポータルを使用してAKSクラスタを作成するプロセスをレビューしたので、コードを使用してプロセスを繰り返すことができます.
ステップ1:作成
Resource group
とService principal
クラスタに.私たちはSystem-assigned managed identity
Azureポータルの例では.Pythonでの例
# Create new resource group
resource_group = resources.ResourceGroup("azure-native-py-aks")
# Create an AD service principal
ad_app = azuread.Application("aks", display_name="aks")
ad_sp = azuread.ServicePrincipal("aksSp", application_id=ad_app.application_id)
# Generate random password
password = random.RandomPassword("password", length=20, special=True)
# Create the Service Principal Password
ad_sp_password = azuread.ServicePrincipalPassword("aksSpPassword",
service_principal_id=ad_sp.id,
value=password.result,
end_date="2099-01-01T00:00:00Z")
# Generate an SSH key
ssh_key = tls.PrivateKey("ssh-key", algorithm="RSA", rsa_bits=4096)
ステップ2 : AKクラスタの設定設定オプションを設定します
ManagedClusterAgentPoolProfileArgs
:Count
: 仮想マシンの数MaxPods
: ノード上で実行できるPODの最大数.Mode
: プールノードの型を設定します.system or user Name
: プールノードの名前OsType
: os型を指定するType
: Aの間を選択VirtualMachineScaleSet
またはAvailabilitySet
VmSize
: クラスタで使用する仮想マシンのサイズ.残りのパラメータはKubernetesバージョンを設定し、RBACを有効にし、
ContainerService
. # Create cluster
managed_cluster_name = config.get("managedClusterName")
if managed_cluster_name is None:
managed_cluster_name = "azure-native-aks"
managed_cluster = containerservice.ManagedCluster(
managed_cluster_name,
resource_group_name=resource_group.name,
agent_pool_profiles=[{
"count": 3,
"max_pods": 110,
"mode": "System",
"name": "agentpool",
"node_labels": {},
"os_disk_size_gb": 30,
"os_type": "Linux",
"type": "VirtualMachineScaleSets",
"vm_size": "Standard_DS2_v2",
}],
enable_rbac=True,
kubernetes_version="1.18.14",
linux_profile={
"admin_username": "testuser",
"ssh": {
"public_keys": [{
"key_data": ssh_key.public_key_openssh,
}],
},
},
dns_prefix=resource_group.name,
node_resource_group=f"MC_azure-native-go_{managed_cluster_name}_westus",
service_principal_profile={
"client_id": ad_app.application_id,
"secret": ad_sp_password.value
})
ステップ3:エクスポートエクスポートファイルエー
kubeconfig
ファイルはクラスタに関する情報を整理し、許可するkubectl
クラスタに接続します.Pythonでの例
# Export kubeconfig
encoded = creds.kubeconfigs[0].value
kubeconfig = encoded.apply(
lambda enc: base64.b64decode(enc).decode())
pulumi.export("kubeconfig", kubeconfig)
ステップ4 : AKクラスタに接続する私たちは
kubeconfig
ファイルをクラスタに接続します.をコピーするのは一般的な習慣ですkubeconfig
ファイル~/.kube/config
, どちらがディレクトリですかkubectl
ファイルを探します.ただし、--kubeconfig
例えば、kubectl --kubeconfig /path/to/kubeconfig_file get pods
この例のように、AKSクラスタを展開するには、パラメーターを設定する必要があります.このアクションは、ポータルまたはコードで行うことができます.コードの利点は、クラスタがAzureポータルを使用することなく、要求に応じて作成できることです.この設定は、dev/test環境や生産環境など、さまざまな環境がある場合に便利です.AKを展開するための完全なコードはGithubTypescript , Python , Go , and C# .
概要
Azure Kubernetesサービスを使用すると、迅速かつ効率的にKubernetesクラスタを展開することができます.AKUE展開は、マスターノードがAzureによって提供されるので、労働者ノードを構成します.Azure Portalは構成のための簡略化されたインターフェースを提供します、しかし、あなたが配備の上に細かい穀物管理を望むならば、コードとしての基盤はオプションです.これは、構成がアプリケーション展開のチューニングを必要とする生産展開に特に当てはまります.
次の記事では、さまざまなメソッドを使用してAKSクラスタにアプリケーションを配備します.
Reference
この問題について(Azure開発者が知っておくべきトップ5つの事柄:Kubernetesインフラストラクチャ), 我々は、より多くの情報をここで見つけました https://dev.to/pulumi/top-5-things-an-azure-developer-needs-to-know-kubernetes-infrastructure-58mlテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol