■ はじめに
https://dk521123.hatenablog.com/entry/2020/04/27/224624
https://dk521123.hatenablog.com/entry/2020/05/01/000000
の続き。 今回は、ローカルで Kubernetes を使って nginx を立ち上げる。
目次
【1】今回のやること 【2】前提条件 【3】構築手順 1)Minikubeを起動する 2)Deploymentを作成する 3)Podを確認する 4)Service を作成する
【1】今回のやること
Kubernetes で nginx を立ち上げてみる
【2】前提条件
* Kubernetes の環境構築は行われていること => 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2020/05/01/000000
【3】構築手順
1)Minikube(Cluster)を起動する
* クラスタ は、Kubernetes の実行環境で、 制御サーバである「マスター(Master Node)」と 実行サーバである複数台の「ノード(Node)」から構成 => minikube では、1台のホストに「マスター」と「ノード」が同居
コマンド例
# Minikube を起動 $ minikube start # Minikube の稼働状況を確認 $ minikube status # ダッシュボードを起動 $ minikube dashboard 🤔 Verifying dashboard health ... 🚀 Launching proxy ... 🤔 Verifying proxy health ... 🎉 Opening http://127.0.0.1:46631/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser... 👉 http://127.0.0.1:46631/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ # minikube dashboard --url
ダッシュボード
https://minikube.sigs.k8s.io/docs/handbook/dashboard/
1)Pod
* Pod は、1つ以上のコンテナから構成された最小単位
[0] 定義ファイル (マニフェストファイル) 作成
apiVersion: v1 kind: Pod metadata: name: nginx-nod1 spec: containers: - name: nginx image: nginx:1.20.0
[1] Podを作成
# YAMLファイルに基づいてPodを作成 $ kubectl apply -f pod1.yaml pod/nginx-nod1 created
[2] pod の作成確認
# Podの一覧表示 kubectl get pod # Podに関する情報を表示 kubectl describe pod nginx-nod1
2)Deployment
* Deployment は、Kubernetes で管理するアプリケーションの単位
[0] 定義ファイル (マニフェストファイル) 作成
* 定義ファイルの記述した内容に従って Pod を作成する * nginx-deployment.yaml を作成 => 作成後、以下[1]~[3]を実行する。
nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.17.10 ports: - containerPort: 80
[1] Deploymentを作成
# YAMLファイルに基づいてDeploymentを作成 kubectl apply -f ./nginx-deployment.yaml # 補足:コマンドでの作成 # kubectl create deployment nginx-deployment --image=docker.io/nginx:1.17.10
[2] deployment の作成確認
# Deployment の一覧表示 kubectl get deployments # Deploymentに関する情報を表示 kubectl describe deployment nginx-deployment
補足:deployment の削除
kubectl delete deployment nginx-deployment
3)Podを確認する
* Deployment が作成されると、アプリケーションを実行するノードが 自動的にスケジューリングされ実行される => この実行の単位を「Pod」と呼ぶ
[1] Pod の作成確認
kubectl get pods # Deploymentによって作成されたPodを一覧表示 kubectl get pods -l app=nginx
実験
kubectl scale deployments/nginx-deployment --replicas=4 kubectl get pods
4)Service を作成する
* Deploymentを外部に公開するには、「Service」を作成する必要がある * Service の公開方法には以下の通り。
# | 公開方法 | 説明 |
---|---|---|
1 | ClusterIP | クラスター内部のIPで公開。クラスター内部からのみアクセス可能 |
2 | NodePort | NATを使用して公開。クラスター外部からのアクセスが可能 |
3 | LoadBalancer | ロードバランサで公開。Minikubeでは未サポート |
4 | ExternalName | FQDN と Kube-DNS を用いて公開 |
[0] 設定ファイル作成
* nginx-service.yaml を作成 => 作成後、以下[1]~[3]を実行する。
nginx-service.yaml
apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer selector: app: nginx ports: - name: http port: 8080 targetPort: 80
[1] serviceを作成
kubectl apply -f ./nginx-service.yaml
[2] service の作成確認
kubectl get services
[3] Node経由で公開されているserviceにアクセスする
minikube service nginx
参考文献
https://qiita.com/joe_hirata/items/0c4073f2cc39027d1c32
公式サイト
https://kubernetes.io/ja/docs/tutorials/hello-minikube/
https://kubernetes.io/ja/docs/tasks/run-application/run-stateless-application-deployment/
関連記事
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
Kubernetes ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/02/005053
Kubernetes ~ MicroK8s / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/03/10/230329
Kubernetes ~ 基本編 / Pod ~
https://dk521123.hatenablog.com/entry/2024/03/16/111336
Kubernetes ~ 基本編 / minikube ~
https://dk521123.hatenablog.com/entry/2023/05/07/214515
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
Kubernetes ~ 基本編 / kubeconfigファイル ~
https://dk521123.hatenablog.com/entry/2023/05/24/211803
Kubernetes ~ 基本編 / Helm ~
https://dk521123.hatenablog.com/entry/2023/05/11/000840
Kubernetes ~ Namespace ~
https://dk521123.hatenablog.com/entry/2024/10/25/000712
Kubernetes ~ Kubernetes Dashboard ~
https://dk521123.hatenablog.com/entry/2023/05/27/144144
Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000
Amazon EKS ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/10/220241
Apache Flink ~ 環境構築編 / Kubernetes ~
https://dk521123.hatenablog.com/entry/2023/05/09/235256