はじめに
kubectl create コマンドは、Kubernetes リソースを作成するための必須ツールです。このコマンドは、YAML または JSON ファイルを使用して、名前空間、デプロイメント、サービス、シークレット、および ConfigMap などのリソースを定義します。この実験では、これらのリソースを手順通りに作成し、Kubernetes におけるそれらの役割を理解します。
この実験が終了すると、以下のことができるようになります。
- Minikube クラスタを起動して検証する。
kubectl createを使用して、さまざまな Kubernetes リソースを作成して検証する。
Minikube を起動してクラスタを検証する
Kubernetes を使用する前に、稼働しているクラスタが必要です。Minikube は、軽量のローカル Kubernetes クラスタを提供します。
プロジェクトディレクトリに移動する:
ターミナルを開き、デフォルトの作業ディレクトリに移動します。
cd /home/labex/projectMinikube を起動する:
クラスタを初期化するために Minikube を起動します。
minikube start- Minikube は単一ノードの Kubernetes クラスタを作成します。この手順には数分かかる場合があります。
Minikube の状態を検証する:
Minikube が正常に起動したかどうかを確認します。
minikube statusapiserverやkubeletなどのコンポーネントがRunningと表示されていることを確認します。Kubernetes の設定を確認する:
kubectlが Minikube クラスタに接続されていることを確認します。kubectl cluster-infoこれにより、API サーバーやその他のコンポーネントに関する詳細が表示されます。
Minikube が起動に失敗した場合は、minikube delete を使用してリセットして再度試してください。
kubectl create コマンドを調べる
kubectl create コマンドは、Kubernetes リソースを作成するための複数のサブコマンドを提供します。これは、名前空間、デプロイメント、サービス、シークレット、および ConfigMap などのリソースの作成を管理するのに役立ちます。
利用可能な kubectl create サブコマンドを表示するには、次のコマンドを実行します。
kubectl create -h
次の出力が表示されます。
ファイルまたは標準入力からリソースを作成します。
JSON と YAML 形式が受け付けられます。
例:
## pod.json のデータを使用してポッドを作成する
kubectl create -f./pod.json
## 標準入力に渡された JSON を元にポッドを作成する
cat pod.json | kubectl create -f -
## registry.yaml のデータを JSON 形式で編集し、編集後のデータを使用してリソースを作成する
kubectl create -f registry.yaml --edit -o json
利用可能なコマンド:
clusterrole クラスタロールを作成する
clusterrolebinding 特定のクラスタロールに対するクラスタロールバインディングを作成する
configmap ローカルファイル、ディレクトリまたはリテラル値からコンフィグマップを作成する
cronjob 指定された名前のクロンジョブを作成する
deployment 指定された名前のデプロイメントを作成する
ingress 指定された名前のイングレスを作成する
job 指定された名前のジョブを作成する
namespace 指定された名前の名前空間を作成する
poddisruptionbudget 指定された名前のポッド中断予算を作成する
priorityclass 指定された名前の優先度クラスを作成する
quota 指定された名前のクォータを作成する
role 単一のルールを持つロールを作成する
rolebinding 特定のロールまたはクラスタロールに対するロールバインディングを作成する
secret 指定されたサブコマンドを使用してシークレットを作成する
service 指定されたサブコマンドを使用してサービスを作成する
serviceaccount 指定された名前のサービスアカウントを作成する
token サービスアカウントトークンを要求する
利用可能なサブコマンドとその説明を確認して、kubectl create をどのように使用できるかを理解しましょう。
名前空間を作成する
名前空間を使用すると、Kubernetes 内のリソースを整理して分離できます。
名前空間定義ファイルを作成する:
新しいファイル
namespace.yamlを開きます。nano namespace.yaml名前空間を定義する:
次の内容を追加します。
apiVersion: v1 kind: Namespace metadata: name: mynamespaceCtrl+Xを押してからYを押し、その後Enterを押してファイルを保存します。名前空間を適用する:
名前空間を作成します。
kubectl create -f namespace.yaml名前空間を検証する:
名前空間の一覧を確認します。
kubectl get namespaces出力に
mynamespaceが表示されていることを確認します。
デプロイメントを作成する
デプロイメントは、ポッドの期待される状態を管理および維持します。
デプロイメント定義ファイルを作成する:
deployment.yamlという名前のファイルを開きます。nano deployment.yamlデプロイメントを定義する:
Nginx コンテナのレプリカを 3 つ展開するために、次の内容を追加します。
apiVersion: apps/v1 kind: Deployment metadata: name: mydeployment namespace: mynamespace spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: nginx-container image: nginxファイルを保存します。
デプロイメントを適用する:
デプロイメントを作成します。
kubectl create -f deployment.yamlデプロイメントを検証する:
デプロイメントとそのポッドを確認します。
kubectl get deployments -n mynamespace kubectl get pods -n mynamespace3 つのポッドが稼働していることを確認します。
サービスを作成する
サービスは、一連のポッドに対して安定したネットワーク アクセスを提供します。
サービス定義ファイルを作成する:
service.yamlという名前のファイルを開きます。nano service.yamlサービスを定義する:
次の内容を追加します。
apiVersion: v1 kind: Service metadata: name: myservice namespace: mynamespace spec: selector: app: myapp ports: - protocol: TCP port: 80 targetPort: 80ファイルを保存します。
サービスを適用する:
サービスを作成します。
kubectl create -f service.yamlサービスを検証する:
サービスの一覧を確認します。
kubectl get services -n mynamespacemyserviceが一覧に表示されていることを確認します。
シークレットを作成する
シークレットは、パスワードや API キーなどの機密情報を安全に保管します。
シークレット定義ファイルを作成する:
secret.yamlという名前のファイルを開きます。nano secret.yamlシークレットを定義する:
Base64 でエンコードされた値を持つ次の内容を追加します。
apiVersion: v1 kind: Secret metadata: name: mysecret namespace: mynamespace type: Opaque data: username: dXNlcm5hbWU= ## "username" の Base64 password: cGFzc3dvcmQ= ## "password" の Base64ファイルを保存します。
シークレットを適用する:
シークレットを作成します。
kubectl create -f secret.yamlシークレットを検証する:
シークレットの一覧を確認します。
kubectl get secrets -n mynamespace出力に
mysecretが表示されていることを確認します。
コンフィグマップを作成する
コンフィグマップは、キーと値のペアで構成される構成データを保存します。
コンフィグマップ定義ファイルを作成する:
configmap.yamlという名前のファイルを開きます。nano configmap.yamlコンフィグマップを定義する:
次の内容を追加します。
apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap namespace: mynamespace data: database.host: "example.com" database.port: "5432"ファイルを保存します。
コンフィグマップを適用する:
コンフィグマップを作成します。
kubectl create -f configmap.yamlコンフィグマップを検証する:
コンフィグマップの一覧を確認します。
kubectl get configmaps -n mynamespace出力に
myconfigmapが表示されていることを確認します。
まとめ
この実験では、以下のことを学びました。
- Minikube クラスタを起動して検証する方法。
- 名前空間、デプロイメント、サービス、シークレット、コンフィグマップなどの Kubernetes リソースを作成する方法。
- これらのリソースの状態を検証する方法。
これらの手順をマスターすることで、Kubernetes で効果的にアプリケーションを管理および展開できるようになります。これらの手順を練習して理解を深めましょう!


