k8sを触ってみる- pod を立てるまで
k8s(minikube)を使って、nginxをpodとして立てるまでやってみたときのメモです。
k8sとは
これまでのdockerなどによるコンテナの運用や監視、実行などを自動で行ってくれるツールです。
これまでは、特定のタイミングでサーバー台数をスケールしたりという行為はホストが複数ある場合はネットワークなどの関係で非常に難易度が高い。
↑の問題を解決するためにできたのがk8s。
複数のhostを一つの環境として扱い、操作したり、状態検知をして自動で復旧したりなどが出来る。
ただ、その分扱う難易度というか、概念や考え方がが非常に独特なため、先に用語の解説をしていきます。
ざっくり用語解説
概念
cluster
以下の機能を包括的を管理するもの
masterというものがクラスターを管理している。
node
podを起動して、リソース管理をする機構のこと。一つの物理サーバーやEC2のようなサーバーだと考えれば良いと思います。
pod
k8s上で考えられる最小単位のアプリケーションのこと。podはnodeの中で起動する。podの中には自分のアプリケーションだったり、DBだったりを入れる。大体dockerのコンテナと同じだが、podの場合は複数のコンテナを一つのpodとして扱うときもある。
controller
podに対して操作を行ったり、監視をしたりするものの総称だと考えてください。コントローラーは独自のライフサイクルを持っていて、
コントローラーの種類ごとに監視や更新など用途が違いそれごとにライフサイクルも違います。
service
各pod同士やnodeが疎通するためのネットワークの概念
podのIPアドレスはアーキテクチャ上一定になることがなく、直IP打ちで疎通するのもしんどいので、
単一の疎通のエンドポイントを提供する機能
ツール
minikube
今回はminikubeという簡易版k8sのようなツールで環境を構築していきます。
minikubeとは単一nodeのクラスターを提供するツールで、概念や一通りの使い方を学びやすいので採用しました。
install
ここから自分のOSに合わせてインストール
driver の設定
コンテナに何のツールを使うかを指定する必要があります。
driver の一覧
https://minikube.sigs.k8s.io/docs/reference/drivers/
今回は、使い慣れているdockerを使用します。
minikube config set vm-driver docker
起動
minikube start
起動したらこんな感じで色々出てきます。
😄 minikube v1.7.3 on Ubuntu 18.04
▪ KUBECONFIG=~/.kube/config
✨ Using the docker (experimental) driver based on user configuration
🔥 Creating Kubernetes in docker container with (CPUs=2), Memory=2000MB (7864MB available) ...
🐳 Preparing Kubernetes v1.17.3 on Docker 19.03.2 ...
▪ kubeadm.pod-network-cidr=10.244.0.0/16
🚀 Launching Kubernetes ...
🌟 Enabling addons: default-storageclass, storage-provisioner
⌛ Waiting for cluster to come online ...
🏄 Done! kubectl is now configured to use "minikube"
これでクラスターとnodeが作れたので、次はnodeやpodなどをいじっていきます。
クラスターを操作するツール
minikubeはクラスターを創ることはできますが、それを操作したり、状態を確認したりはできません。
なので、クラスターを操作するツールが必要です。
それが kubectl
となります。
install
下記参照
https://kubernetes.io/docs/tasks/tools/install-kubectl/
nodeを確認
インストールしたら以下をnodeを確認します。
minikubeは単一nodeのclusterを創るツールなので、正常に動作していれば、すでにnode立ち上がっているはずです。
kubectl get nodes
正常であればこんな感じになるはずです。
NAME STATUS ROLES AGE VERSION
minikube Ready master 14h v1.17.3
これでnodeがちゃんと存在していることが確認できたので次はnodeにpodを設置します。
pod を設置する。
podを設置するために、まずpodの中身を定義する必要があります。
というわけでまずは設定ファイルを設定します。
マニフェストの定義
今回はシンプルにnginx を創るだけですので、以下のような定義にしました。
nginx.yaml↓
apiVersion: v1
kind: Pod # 何に対しての設定ファイルかを指定
metadata:
name: nginx
labels:
name: loadBalancer
spec:
containers:
- name: lb
image: nginx
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8888
pod を設置する
設置するには以下のコマンドを叩きます。
kubectl apply -f ./nginx.yaml
確認してみよう
kubectl get pods
こうなっていたら成功です。
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 32m
おわりに
pod までできましたが、podのnginx にcurl を叩いたり、ローカルからport接続して見れるようにしたいので、
また続きを書こうと思います。
それでは良いk8sライフを
Author And Source
この問題について(k8sを触ってみる- pod を立てるまで), 我々は、より多くの情報をここで見つけました https://qiita.com/souhei-etou/items/ca347d9aa4b83cfe176f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .