!!!参考 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 {{category2 OS,Linux}} {{category2 仮想化}}