Kubernetesオブジェクト
5228 ワード
KubernetesオブジェクトはKubernetesによって提供されたさまざまな種類のエンティティを展開し、維持し、スケーリングしたり、クラウド上の前提インフラストラクチャのアプリケーションです.このポストでは、我々は我々のApplications展開で使用する異なるKubernetesオブジェクトを通過します.
PODはKubernetesクラスタで作成できる最も基本的なオブジェクトです.通常、1つ以上の実行中のコンテナが含まれます.コンテナは、同じネットワーク、ストレージ、およびライフサイクルを共有します.これが意味するのは、直接通信することができ、両方を停止し、同時に起動することです.
pod定義
これは、このオブジェクトを作成するために使用しているKubernetes APIのバージョンを定義します.いくつかのバージョンがあり、いくつかのオブジェクトが各バージョンで導入されます.いくつかの一般的なものは、V 1、Apps/V 1、および拡張モジュール/V 1 beta 1です.
種類:Kubernetesオブジェクトの型です.この例では、podを作成しています.(そうポッド)
メタデータ:メタデータはオブジェクトに関する情報です.メタデータには、通常、オブジェクトを与える名前、ラベルのラベルなどが含まれます.名前、アプリケーション、所有者、グループ、ティアなどのように多くのラベルを定義できます.
spec : specのセクションは、オブジェクトの仕様を定義する場所です.podの場合は、コンテナの状態を記述します.specセクションで指定できるオプションは以下の通りです.
コンテナを指定しますあなたのポッド で実行するイメージあなたのポッドで動くコンテナの名前. ポート のポッド定義でポッドを作成しましょう.YAMLファイル:
今すぐあなたの端末に行く、あなたのファイルを作成したディレクトリにしてください.
レプリカは、Kubernetesクラスタで同じpodの複数のコピーを作成するために使用されます.これは、指定された任意の時点で、指定されたポッドの指定された数が実行状態にあることを保証するのに役立ちます.
ReplicSetは、既存のものが失敗したときに、podの新しいインスタンスを生成し、実行中のインスタンスが指定された数に達していない場合にスケールアップし、同じラベルを持つ別のインスタンスが作成された場合には、スケールダウンまたは削除を行います.ReplicSetは、指定された数のpod複製が連続的に実行されて、リソース使用量の増加の場合に負荷バランシングに役立つことを確実とします.
レプリカ定義
展開はPODを管理するために使用されるKubernetesオブジェクトです.展開が作成される最初のものはレプリケートを作成することです.レプリカは、レプリカオプションで指定された番号に従ってPODを作成します.以下の配置のためのYAML定義を見ると、展開のspecセクションはレプリケートの定義のように見えます.
展開は、実行中のアプリケーションの数を増やすか、または実行するアプリケーションを更新することによって、アプリケーションをスケールするために使用できます.
名前空間は、Kubernetesクラスタ内のオブジェクトを整理するために使用されます.リソースをグループ化し、それらのリソースに対するアクションを実行できます.
環境内のすべての名前空間を見るには、
名前空間の作成は単一のコマンドで行うことができます.' test 'という名前空間を作りたいなら、以下のように実行します.
Kubernetesサービスは、1つのエンドポイントを使用して、一連のポッドに配備されたアプリケーションを公開するために使用されます.サービスは、Kubernetesのポッドのセットへのネットワークアクセスを可能にします.
Kubernetesのサービスは、次のようなサービス定義を渡すことによってAPIリクエストを通じて作成できます.
デフォルトで最も簡単なサービスタイプは
ポッド
PODはKubernetesクラスタで作成できる最も基本的なオブジェクトです.通常、1つ以上の実行中のコンテナが含まれます.コンテナは、同じネットワーク、ストレージ、およびライフサイクルを共有します.これが意味するのは、直接通信することができ、両方を停止し、同時に起動することです.
pod定義
apiVersion: v1
kind: Pod
metadata:
name: my-first-pod
labels:
name: my-first-pod
app: nginx-app
spec:
containers:
- image: nginx
name: nginx-app
ports:
- containerPort: 80
我々が同様に他のオブジェクト定義で同様の定義を使用しているように、我々がちょうど使ったYAML定義を壊しましょう.また、この定義ファイルを理解しようとします.これは、このオブジェクトを作成するために使用しているKubernetes APIのバージョンを定義します.いくつかのバージョンがあり、いくつかのオブジェクトが各バージョンで導入されます.いくつかの一般的なものは、V 1、Apps/V 1、および拡張モジュール/V 1 beta 1です.
種類:Kubernetesオブジェクトの型です.この例では、podを作成しています.(そうポッド)
メタデータ:メタデータはオブジェクトに関する情報です.メタデータには、通常、オブジェクトを与える名前、ラベルのラベルなどが含まれます.名前、アプリケーション、所有者、グループ、ティアなどのように多くのラベルを定義できます.
spec : specのセクションは、オブジェクトの仕様を定義する場所です.podの場合は、コンテナの状態を記述します.specセクションで指定できるオプションは以下の通りです.
コンテナを指定します
今すぐあなたの端末に行く、あなたのファイルを作成したディレクトリにしてください.
kubectl apply -f pod-definition.yaml
上記のコマンドはpod定義ファイルで定義されているnginxイメージを持つpodを生成します.そして、kubectl get pods
を使用して、ポッドを見ることができます.レプリカスセット
レプリカは、Kubernetesクラスタで同じpodの複数のコピーを作成するために使用されます.これは、指定された任意の時点で、指定されたポッドの指定された数が実行状態にあることを保証するのに役立ちます.
ReplicSetは、既存のものが失敗したときに、podの新しいインスタンスを生成し、実行中のインスタンスが指定された数に達していない場合にスケールアップし、同じラベルを持つ別のインスタンスが作成された場合には、スケールダウンまたは削除を行います.ReplicSetは、指定された数のpod複製が連続的に実行されて、リソース使用量の増加の場合に負荷バランシングに役立つことを確実とします.
レプリカ定義
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
tier: frontend
spec:
replicas: 2
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: nginx-app
image: nginx
レプリケートを作成するには、次のコマンドをYAML定義ファイルで実行します.kubectl apply -f ReplicaSet-definition.yaml
レプリカが実行されると、kubectl get replicaset <your-replicaset-name>
展開
展開はPODを管理するために使用されるKubernetesオブジェクトです.展開が作成される最初のものはレプリケートを作成することです.レプリカは、レプリカオプションで指定された番号に従ってPODを作成します.以下の配置のためのYAML定義を見ると、展開のspecセクションはレプリケートの定義のように見えます.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: mongo
spec:
replicas: 2
selector:
matchLabels:
app: mongo
template:
metadata:
labels:
app: mongo
spec:
containers:
- name: mongo
image: mongo
したがって、配置を作成するときに、定義に記載されたPODを持つレプリケートを作成します.展開は、実行中のアプリケーションの数を増やすか、または実行するアプリケーションを更新することによって、アプリケーションをスケールするために使用できます.
kubectl apply -f Deployment-definition.yaml
あなたはkubectl get deployments
で展開を見ることができます名前空間
名前空間は、Kubernetesクラスタ内のオブジェクトを整理するために使用されます.リソースをグループ化し、それらのリソースに対するアクションを実行できます.
環境内のすべての名前空間を見るには、
kubectl get namespaces
を使用します名前空間の作成は単一のコマンドで行うことができます.' test 'という名前空間を作りたいなら、以下のように実行します.
kubectl create namespace testing
または、YAML定義を使用して名前空間を作成することができますapiVersion: v1
kind: Namespace
metadata:
name: testing
ここで、名前空間を作成しましたが、新しく作成された名前空間にどのようにオブジェクトを作成するのでしょうか.定義ファイル/コマンド内の名前空間を参照する必要があります.apiVersion: v1
kind: Pod
metadata:
name: myPod
namespace: testing
labels:
name: namespaced-pod
spec:
containers:
- image: hello-world
name: firstpod
サービス
Kubernetesサービスは、1つのエンドポイントを使用して、一連のポッドに配備されたアプリケーションを公開するために使用されます.サービスは、Kubernetesのポッドのセットへのネットワークアクセスを可能にします.
Kubernetesのサービスは、次のようなサービス定義を渡すことによってAPIリクエストを通じて作成できます.
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: myApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
この例では、サービスは私のサービスと命名されて、メタデータラベル「APP = MyApp」でどんなTCPの上でもTCPポート9376を目標とします.Kubernetesはサービスのラベルセレクタを常にポッドがサービスに含まれている任意の時点で決定するために評価します.これは、新しいサービスがラベルセレクタにすでにマッチする既存のポッドを含むことができることを意味します.サービスタイプ
デフォルトで最も簡単なサービスタイプは
ClusterIP
です.それはKubernetesクラスタにサービスのclusteripアドレスを内部的に公開します.NodePort
- Kubernetesクラスタ内のすべてのノードで、指定したポート番号にサービスを公開します.指定されたポートのノードのIPへの着信要求がサービスのclusteripに発送されるという意味.LoadBalancer
-サービスはNodeportのように露出していますが、Kubernetesがサービスに外部の要求を受け取る(クラウドプロバイダーによってサポートされている場合)クラウドでロードバランサーを作成します.そして、それをノードノードの間で配布します.この型を指定するには、この行をspecに追加します.type: LoadBalancer
Reference
この問題について(Kubernetesオブジェクト), 我々は、より多くの情報をここで見つけました https://dev.to/karnatisrinivas/kubernetes-objects-4npfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol