■ はじめに
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)を起動する 2)Deploymentを作成する 3)Service を作成する
1)Minikube(Cluster)を起動する
* クラスタ は、Kubernetes の実行環境で、 制御サーバである「マスター(Master Node)」と 実行サーバである複数台の「ノード(Node)」から構成 => minikube では、1台のホストに「マスター」と「ノード」が同居
コマンド例
# Minikube を起動 minikube start # Minikube の稼働状況を確認 minikube status # ダッシュボードを起動 minikube dashboard
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 ~ 基本編 / 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 ~ 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