Kubernetesの学習パート1:導入


このポストは、Kubernetesについてのシリーズの最初の部分です.チュートリアルのシリーズではなく、これは私の旅の概念とツールKubernetesを使用してオーケストレーションについて学ぶ定期的なログになることを意味します.

インストール
私はKubernetes(それを管理していない)を使用する方法を学ぶつもりだったので、私はGoogleのクラウドプラットフォームでKubernetesクラスタを開始し、そこから働いた.したがって、私はKubernetesクラスタのインストールと設定このシリーズではありません.GCP Kubernetesクラスタを使用する方法の詳細についてはhere .

最初に:概念
私は常に理解し、新しい技術やツールを学ぶことができます1つのことは、ツールや技術の目的は何かを理解することです、それは何のために使用され、概念を正しく取得します.
あなたが基本的な概念を理解していることは、ツール/技術のあなたの知識を向上させる前に、道の大きな助けです.
では、Kubernetesとは何かを理解して始めよう.

クベルネート
Kubernetesは、ノードのグループ間でコンテナアプリケーションを管理することができますオーケストレーションツールです.だけでなく、それらを迅速に実行するためのメカニズムを提供するだけでなく、どのように更新、展開、それらへのアクセスを提供します.

ポッド:Kubernetes宇宙の原子

PODはKubernetesクラスタ内の最小単位であり、同じ分離実行環境で実行中のアプリケーションコンテナとボリュームのコレクションを表します.同じPODの各コンテナは同じIPアドレス、名前空間、およびストレージを共有します.
私は容器のコレクションとしてポッドを説明しましたが、最も一般的なパターンはポッドあたり1つの容器を持つことです.同じpodでグループを複数コンテナについて考える必要があるなら

Will these containers work properly if they land on different machines?


答えが「いいえ」であるならば、あなたは確かに同じポッドのそれらのコンテナをグループ化しなければなりません.

Kubectlの基礎
さらに進む前に、Kubectl(Kubernetes CommandLine Tool)の基本的な機能を見てみましょう.

バージョンとステータス
KubectlとKubernetesが正常に動作するようにするには、次のコマンドを実行します.
kubectl version
そして、あなたは、それがあなたのKubernetesクラスタとクライアントのバージョンをリストしている下のイメージのようなものを見るべきです.

さらに、Kubernetesクラスタのメインコンポーネントの状態を確認できます.
kubectl get componentstatuses
これには次のような出力があります.



Kubernetesクラスタを構成するノードに関する情報を取得するには、次のコマンドを実行します.
kubectl get nodes
このコマンドは、次のイメージで見ることができますので、クラスタのすべてのノードに関する基本的な情報を一覧表示します.私が以前に言ったように、私のクラスタはGoogleのクラウド・プラットフォーム上にあるので、セットアップ(ローカルクラスタまたは別のクラウドプロバイダのクラスタ)によっては、出力は少し異なります.


ポッド
さて、すぐにポッドについて教えてください.
kubectl run kubernetes-hello-world --image=paulbouwer/hello-kubernetes:1.9 --port=8080
注意kubectl run 物事を行うには理想的な方法ではありませんが、例のためにそれをしましょう.次のポストでは、リソースを定義する正しい方法を探索します.出力は以下のようになります.

次のように実行します.
kubectl get pods
次の出力を取得します.ここでは、kubectl run コマンド.

また、他のコマンドなどの詳細をチェックすることもできますdescribe and logs , 次のようになります.
kubectl describe pods kubernetes-hello-world
kubectl logs kubernetes-hello-world
最初に指定されたPODの詳細な説明を次に示します.
Name:         kubernetes-hello-world
Namespace:    default
Priority:     0
Node:         gke-kuar-cluster-default-pool-41051aa0-hs4q/10.138.15.194
Start Time:   Thu, 11 Mar 2021 17:44:41 +0000
Labels:       run=kubernetes-hello-world
Annotations:  <none>
Status:       Running
IP:           10.96.14.3
IPs:
  IP:  10.96.14.3
Containers:
  kubernetes-hello-world:
    Container ID:   docker://db09b9c745c03f3e757f1f386f5df8e04e48faaace587cfa72ed1f3e6a751300
    Image:          paulbouwer/hello-kubernetes:1.9
    Image ID:       docker-pullable://paulbouwer/hello-kubernetes@sha256:be6b5ba3abdca6e01689e0d1d27b41410fb5bf5793da407108a89ef355f362f0
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Thu, 11 Mar 2021 17:44:50 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-dzc9f (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-dzc9f:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-dzc9f
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  23m   default-scheduler  Successfully assigned default/kubernetes-hello-world to gke-kuar-cluster-default-pool-41051aa0-hs4q
  Normal  Pulling    23m   kubelet            Pulling image "paulbouwer/hello-kubernetes:1.9"
  Normal  Pulled     23m   kubelet            Successfully pulled image "paulbouwer/hello-kubernetes:1.9"
  Normal  Created    23m   kubelet            Created container kubernetes-hello-world
  Normal  Started    23m   kubelet            Started container kubernetes-hello-world
番目のオプションは、実行中のコンテナに関連するログを与えます.デバッグと検査のこれらの方法は、Kubernetes(ポッド、展開、サービスなど)で利用可能なすべてのリソースで利用可能です.
ログの他にアプリケーションをデバッグする1つの最終的な方法は、exec
kubectl exec -it kubernetes-hello-world -- sh
この相互作用の例を次のように表示できます.

最後に、作成したPODを削除するには、次の手順を実行します.

あなたが私の説明が好きであるならば、あなたは私に続くことができます.
次の部分をクリックします.