参考
https://cloud-ace.jp/column/detail229/
https://qiita.com/yuichi1992_west/items/571016084c110d15320e
https://amateur-engineer-blog.com/getting-started-minikube/
https://amateur-engineer-blog.com/create-multi-cluster-by-minikube/
https://zenn.dev/nameless_gyoza/articles/f22466cadaf60bf50405
https://developer.mamezou-tech.com/blogs/2022/04/18/use-minikube-profile/
https://qiita.com/yuichi1992_west/items/49470a7a347f5a932e98
概要
コンテナ化されたアプリケーションをどこにでもデプロイ、スケール、管理できるオープンソースのシステム。
Dockerは単一のコンテナを実行するコンテナエンジンで、Kubernetesは複数のコンテナを管理するツールのイメージ。
Kubernetesはコンテナエンジンとして、Docker以外にもContainerdなどを利用することができる。
ローカルで使ってみる
Minikube
kubarnetesをローカルで簡単に試したりするためのツールにMinikubeがある。
minikubeのダウンロード
https://minikube.sigs.k8s.io/docs/start/
上記URLにアクセスして自分の環境を選択すると必要なコマンドが表示される。
Linux(x86)にインストールするときは以下
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube status
でなにか表示されればインストールされている。
kubectlのダウンロード
https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" sudo install kubectl
docker
コンテナエンジンとしてDockerを使うのでDockerを使えるようにしておく
Hello-World
minikubeを起動
kubernetes環境を使えるようにするためにminikubeを起動する
minikube start
pod作成
kubectl run hello-world --image hello-world --restart=Never
hello-worldのpodを作成
pod/hello-world created
と表示されれば成功。
pod確認
kubectl get pod
で以下が表示される
NAME READY STATUS RESTARTS AGE hello-world 0/1 Completed 0 2m30s
実行ログを確認
hello-worldコンテナは起動すると「Hello from Docker!」と出力するので、そのログを確認する
kubectl logs pod/hello-world
minikubeの使い方
クラスタ開始
minikube start
クラスタ停止
minikube stop
クラスタ削除
minikube delete
ダッシュボードにアクセス
minikube dashboard
Webブラウザで状況の確認ができる
クラスタにssh
minikube ssh
プロファイルを使う
minikubeでもクラスタを複数扱うことができる。デフォルトではminikubeというプロファイルでクラスタが起動される。
クラスタの一覧
minikube profile list
クラスタ(プロファイル)追加
startに-pで任意のプロファイル名を指定することで新しいクラスタを追加できる
minikube start -p hoge minikube profile list
クラスタの停止や削除も「-p プロファイル名」で操作対象のプロファイル指定ができる
全てのクラスタ削除
minikube delete --all
kubectlの使い方
pod追加
ubectl run hello-world --image=hello-world --restart=Never
podログ確認
kubectl logs pod/hello-world
pod確認
kubectl get pod
podの削除
kubectl delete pod/hello-world
デプロイ
https://qiita.com/yuichi1992_west/items/49470a7a347f5a932e98
デプロイ用YAML(nginx.yaml)
apiVersion: v1 # 使用するKubernetes APIバージョンを定義 kind: Service # PodのネットワークであるServiceリソースを定義 metadata: # 名前やラベルを指定 labels: app: nginx-app name: nginx name: nginx-service spec: # spec内にリソースの仕様を記述する selector: # 同一のラベルを定義しているリソースを参照 app: nginx-app name: nginx type: NodePort # Kubenetes外からアクセスできるようにNodePortを指定(ホストOSからNginxの画面が確認できるようにする) ports: - name: nginx-port #ポート番号を指定 port: 80 protocol: TCP targetPort: nginx-port --- apiVersion: apps/v1 kind: Deployment # Podの自己修復機能を持つDeploymentリソースを定義 metadata: labels: app: nginx-app name: nginx name: nginx spec: replicas: 1 # 作成するPod数を定義 selector: matchLabels: app: nginx-app name: nginx template: metadata: labels: app: nginx-app name: nginx spec: containers: - name: nginx image: nginx:latest # NginxのDockerHubに記載されているDockerImageの名称とバージョンを指定 ports: - containerPort: 80 # Podから解放するポート番号を定義 name: nginx-port protocol: TCP
デプロイ
kubectl apply -f nginx.yaml
確認
kubectl get pod kubectl get service minikube service nginx-service[カテゴリ: OS > Linux]
[カテゴリ: 仮想化]
[通知用URL]
Tweet
最終更新時間:2023年05月20日 19時16分12秒