はじめに
この連載ではコンテナオーケストレーションツールである。Kubernatesの使い方を学びます。
環境構築・概念説明・GKEデプロイ・その他応用などについて連載方式で書いていきます。
(筆者はamazon ecsに甘えきっているのですが、そろそろやらねばと思いましてね。。)
サンプルコード
こちらに順次アップしていきますー。
連載記事一覧
Kubernatesとは
Kubernetesは、コンテナの運用を自動化するためのコンテナオーケストレーションシステムです。
コンテナオーケストレーションを実現・管理するための統合的なシステムであり、APIやCLIツールも併せて提供します。
複数のサーバーにまたがってコンテナ管理できます。
コンテナを用いたアプリケーションのデプロイの他にも、様々な運用管理の自動化を実現します。
Dockerホスト管理、サーバリソースを考慮したコンテナ配置、スケーリング、複数のコンテナ群へのアクセスを取りまとめるロードバランサー、死活監視などの仕組みを備えています。
Kubernetesの様々な部品を組み合わせることで、柔軟性の高いアプリケーションを構築できます。
ローカルでKubernatesやってみる
ローカル環境構築
macOSのメニューバーのDockerアイコンから「Preferences」で設定画面に行き、Enabele Kubernetesにチェックを入れてApplyします。
Installをクリック。
kubectlのインストール
kubectlはローカルKubernetes環境でもマネージドのKubernetesでも利用します
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/darwin/amd64/kubectl \ && chmod +x kubectl \ && mv kubectl /usr/local/bin/
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/amd64/kubectl \ && chmod +x kubectl \ && mv kubectl /usr/local/bin/
ダッシュボードのインストール
ダッシュボードはKubernetesにデプロイされているコンテナ等を確認できるWebベースの管理ツールです。
ローカルKubernetes環境では次のようにデプロイできます。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml
次のようなコマンドを実行し、STATUS=Runningになっていればデプロイ完了です。
$ kubectl get pod --namespace=kube-system -l k8s-app=kubernetes-dashboard 1093ms 月 11/ 4 10:56:57 2019[f:id:yuuu1993g:20191104105934p:plain] NAME READY STATUS RESTARTS AGE kubernetes-dashboard-6fd7f9c494-j9946 1/1 Running 0 44s
$ kubectl proxy 月 11/ 4 10:57:38 2019 Starting to serve on 127.0.0.1:8001
以下のURLでダッシュボードにアクセスできます。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
Kubernatesの概念
詳細は次回。
リソース名 | 用途 |
---|---|
Node | Kubernetes クラスタで実行するコンテナを配置するためのサーバ |
Namespace | Kubernetes クラスタ内で作る仮想的なクラスタ |
Pod | コンテナ集合体の単位で、コンテナを実行する方法を定義する |
ReplicaSet | 同じ仕様のPodを複数生成・管理する |
Deployment | ReplicaSet の世代管理をする |
Service | Podの集合にアクセスするための経路を定義する |
Ingress | ServiceをKubernetesクラスタの外に公開する |
ConfigMap | 設定情報を定義し、Podに供給する |
PersistentVolume | Podが利用するストレージのサイズや種別を定義する |
PersistentVolumeClaim | PersistentVolumeを動的に確保する |
StorageClass | PersistentVolumeが確保するストレージの種類を定義する |
StatefulSet | 同じ仕様で一意性のあるPodを複数生成・管理する |
Job | 常駐目的ではない複数のPodを作成し、正常終了することを保証する |
CronJob | cron記法でスケジューリングして実行されるJob |
Secret | 認証情報等の機密データを定義する |
Role | Namespace内で操作可能なKubernetesリソースのルールを定義する |
RoleBinding | RoleとKubernetes リソースを利用するユーザーを紐づける |
ClusterRole | Cluster全体で操作可能なKubernetesリソースのルールを定義する |
ClusterRoleBinding | ClusterRoleとKubernetesリソースを利用するユーザーを紐づける |
ServiceAccount | Pod にKubernetesリソースを操作させる際に利用するユーザー |
まとめ
今回は環境構築とKubernatesの概念を学びました。
次回は実際にKubernatesを操作しながら各概念の詳細を学びましょう。