「Kubernetes」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==Kubernetes== | + | ==[[Kubernetes]]== |
[[Docker]] | | [[Docker]] | | ||
7行目: | 7行目: | ||
*信頼性が高くスケーラブルな分散システムを上手に構築してデプロイするために必要なソフトウェアを提供 | *信頼性が高くスケーラブルな分散システムを上手に構築してデプロイするために必要なソフトウェアを提供 | ||
*分散システムとは、異なるマシンで動作するAPIを実装する部品の集まり | *分散システムとは、異なるマシンで動作するAPIを実装する部品の集まり | ||
− | * | + | *マネージド[[Kubernetes]]サービス(KaaS:Kubernates-as-a-Service) |
− | **Microsoft:Azure Container | + | **Microsoft:Azure Container Ser[[vi]]ce |
− | **Google:Google Kubernetes Engine | + | **Google:Google [[Kubernetes]] Engine |
==minikube== | ==minikube== | ||
*https://github.com/kubernetes/minikube | *https://github.com/kubernetes/minikube | ||
− | * | + | *ローカル開発や学習、テスト用のシンプルな[[Kubernetes]]シュミレータ |
*シングルノードクラスタで、インストールには、ローカルマシンにハイパーバイザーがインストールされていること | *シングルノードクラスタで、インストールには、ローカルマシンにハイパーバイザーがインストールされていること | ||
− | *VT-x/AMD-v | + | *VT-x/AMD-v [[仮想化]]がBIOSで有効化されていること。 |
===インストール=== | ===インストール=== | ||
*https://kubernetes.io/docs/tasks/tools/install-minikube/ | *https://kubernetes.io/docs/tasks/tools/install-minikube/ | ||
====ローカルクラスタの作成==== | ====ローカルクラスタの作成==== | ||
*ローカル仮想マシンを作成 | *ローカル仮想マシンを作成 | ||
− | * | + | *[[Kubernetes]]を設定 |
*kubectlを設定 | *kubectlを設定 | ||
> minikube start | > minikube start | ||
30行目: | 30行目: | ||
− | == | + | ==[[Kubernetes]]クライアント== |
*公式なクライアントは、kubectl | *公式なクライアントは、kubectl | ||
− | *Kubernetes APIと連携するコマンドラインツール | + | *[[Kubernetes]] APIと連携するコマンドラインツール |
*minikube から利用する場合 | *minikube から利用する場合 | ||
> minikube kubectl version | > minikube kubectl version | ||
38行目: | 38行目: | ||
===クラスタのステータス=== | ===クラスタのステータス=== | ||
>minikube kubectl version | >minikube kubectl version | ||
− | Client Version: version.Info{Major:"1", Minor:"15", | + | Client Version: version.Info{Major:"1", Minor:"15", [[Git]]Version:"v1.15.0", [[Git]]Commit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", [[Git]]TreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"} |
− | Server Version: version.Info{Major:"1", Minor:"15", | + | Server Version: version.Info{Major:"1", Minor:"15", [[Git]]Version:"v1.15.0", [[Git]]Commit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", [[Git]]TreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} |
*クラスタを構成しているコンポーネントを確認 | *クラスタを構成しているコンポーネントを確認 | ||
> minikube kubectl get componentstatuses | > minikube kubectl get componentstatuses | ||
− | NAME STATUS MESSAGE | + | NAME STATUS MESSAGE E[[R]][[R]]O[[R]] |
controller-manager Healthy ok | controller-manager Healthy ok | ||
scheduler Healthy ok | scheduler Healthy ok | ||
51行目: | 51行目: | ||
*kubectl get nodes | *kubectl get nodes | ||
> minikube kubectl get nodes | > minikube kubectl get nodes | ||
− | NAME STATUS | + | NAME STATUS [[R]]OLES AGE VE[[R]]SION |
− | minikube | + | minikube [[R]]eady master 36m v1.15.0 |
====ノードの詳細情報==== | ====ノードの詳細情報==== | ||
59行目: | 59行目: | ||
=====基本情報が最初に表示される===== | =====基本情報が最初に表示される===== | ||
Name: minikube | Name: minikube | ||
− | + | [[R]]oles: master | |
Labels: beta.kubernetes.io/arch=amd64 | Labels: beta.kubernetes.io/arch=amd64 | ||
beta.kubernetes.io/os=linux | beta.kubernetes.io/os=linux | ||
76行目: | 76行目: | ||
*Kubernatesマスターに対して正常であるか | *Kubernatesマスターに対して正常であるか | ||
Conditions: | Conditions: | ||
− | Type Status LastHeartbeatTime LastTransitionTime | + | Type Status LastHeartbeatTime LastTransitionTime [[R]]eason Message |
---- ------ ----------------- ------------------ ------ ------- | ---- ------ ----------------- ------------------ ------ ------- | ||
MemoryPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientMemory kubelet has sufficient memory available | MemoryPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientMemory kubelet has sufficient memory available | ||
DiskPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasNoDiskPressure kubelet has no disk pressure | DiskPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasNoDiskPressure kubelet has no disk pressure | ||
PIDPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientPID kubelet has sufficient PID available | PIDPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientPID kubelet has sufficient PID available | ||
− | + | [[R]]eady True Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 Kubelet[[R]]eady kubelet is posting ready status | |
Addresses: | Addresses: | ||
InternalIP: 10.0.2.15 | InternalIP: 10.0.2.15 | ||
100行目: | 100行目: | ||
=====ノード上のソフトウェアバージョンの表示===== | =====ノード上のソフトウェアバージョンの表示===== | ||
System Info: | System Info: | ||
− | + | [[Mac]]hine ID: 7ec5a55cfdc14693866eccf4e9a1228f | |
System UUID: 2C88347D-32CC-4F26-9AEE-1FED259A233C | System UUID: 2C88347D-32CC-4F26-9AEE-1FED259A233C | ||
Boot ID: 1da81daa-4519-4f04-afe0-64efecedd7e7 | Boot ID: 1da81daa-4519-4f04-afe0-64efecedd7e7 | ||
107行目: | 107行目: | ||
Operating System: linux | Operating System: linux | ||
Architecture: amd64 | Architecture: amd64 | ||
− | Container | + | Container [[R]]untime Version: docker://18.9.6 |
Kubelet Version: v1.15.0 | Kubelet Version: v1.15.0 | ||
Kube-Proxy Version: v1.15.0 | Kube-Proxy Version: v1.15.0 | ||
=====ノード上で動いているPod情報の表示===== | =====ノード上で動いているPod情報の表示===== | ||
Non-terminated Pods: (9 in total) | Non-terminated Pods: (9 in total) | ||
− | Namespace Name CPU | + | Namespace Name CPU [[R]]equests CPU Limits Memory [[R]]equests Memory Limits AGE |
--------- ---- ------------ ---------- --------------- ------------- --- | --------- ---- ------------ ---------- --------------- ------------- --- | ||
kube-system coredns-5c98db65d4-j24hp 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 7d1h | kube-system coredns-5c98db65d4-j24hp 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 7d1h | ||
122行目: | 122行目: | ||
kube-system kube-proxy-wrgp5 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h | kube-system kube-proxy-wrgp5 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h | ||
kube-system kube-scheduler-minikube 100m (5%) 0 (0%) 0 (0%) 0 (0%) 7d1h | kube-system kube-scheduler-minikube 100m (5%) 0 (0%) 0 (0%) 0 (0%) 7d1h | ||
− | kube-system storage- | + | kube-system storage-pro[[vi]]sioner 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h |
Allocated resources: | Allocated resources: | ||
(Total limits may be over 100 percent, i.e., overcommitted.) | (Total limits may be over 100 percent, i.e., overcommitted.) | ||
− | + | [[R]]esource [[R]]equests Limits | |
-------- -------- ------ | -------- -------- ------ | ||
cpu 755m (37%) 0 (0%) | cpu 755m (37%) 0 (0%) | ||
131行目: | 131行目: | ||
ephemeral-storage 0 (0%) 0 (0%) | ephemeral-storage 0 (0%) 0 (0%) | ||
Events: | Events: | ||
− | Type | + | Type [[R]]eason Age From Message |
---- ------ ---- ---- ------- | ---- ------ ---- ---- ------- | ||
Normal NodeHasSufficientMemory 7d1h (x8 over 7d1h) kubelet, minikube Node minikube status is now: NodeHasSufficientMemory | Normal NodeHasSufficientMemory 7d1h (x8 over 7d1h) kubelet, minikube Node minikube status is now: NodeHasSufficientMemory | ||
144行目: | 144行目: | ||
Normal Starting 11m kube-proxy, minikube Starting kube-proxy | Normal Starting 11m kube-proxy, minikube Starting kube-proxy | ||
===クラスタのコンポーネント=== | ===クラスタのコンポーネント=== | ||
− | * | + | *[[Kubernetes]]クラスタを構成する多くのコンポーネントが、[[Kubernetes]]自体を使ってデプロイされる |
*kube-system Namesspace内で動作 | *kube-system Namesspace内で動作 | ||
− | ====Kubernetes proxy==== | + | ====[[Kubernetes]] proxy==== |
− | * | + | *クラスタ内のロードバランスされたSer[[vi]]ceにネットワークトラフィックをルーティング |
*クラスタ内の各ノードで動いている必要がある | *クラスタ内の各ノードで動いている必要がある | ||
*DaemonSetというAPIオブジェクトが多くのクラスタではノードでプロキシを動作させるために利用される | *DaemonSetというAPIオブジェクトが多くのクラスタではノードでプロキシを動作させるために利用される | ||
159行目: | 159行目: | ||
*デフォルトのNamespaceを恒久的に変更したい場合 | *デフォルトのNamespaceを恒久的に変更したい場合 | ||
*$HOME/.kube/config に保存される | *$HOME/.kube/config に保存される | ||
− | ===Kubernetes APIオブジェクトの参照=== | + | ===[[Kubernetes]] APIオブジェクトの参照=== |
− | * | + | *[[Kubernetes]]上にあるものは、すべてRESTFulリソースであらわされる |
2020年2月16日 (日) 04:28時点における版
Kubernetes
Docker |
- https://knowledge.sakura.ad.jp/20955/
- 信頼性が高くスケーラブルな分散システムを上手に構築してデプロイするために必要なソフトウェアを提供
- 分散システムとは、異なるマシンで動作するAPIを実装する部品の集まり
- マネージドKubernetesサービス(KaaS:Kubernates-as-a-Service)
- Microsoft:Azure Container Service
- Google:Google Kubernetes Engine
minikube
- https://github.com/kubernetes/minikube
- ローカル開発や学習、テスト用のシンプルなKubernetesシュミレータ
- シングルノードクラスタで、インストールには、ローカルマシンにハイパーバイザーがインストールされていること
- VT-x/AMD-v 仮想化がBIOSで有効化されていること。
インストール
ローカルクラスタの作成
- ローカル仮想マシンを作成
- Kubernetesを設定
- kubectlを設定
> minikube start
停止
> minikube stop
クラスタを削除
> minikube delete
Kubernetesクライアント
- 公式なクライアントは、kubectl
- Kubernetes APIと連携するコマンドラインツール
- minikube から利用する場合
> minikube kubectl version
クラスタのステータス
>minikube kubectl version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
- クラスタを構成しているコンポーネントを確認
> minikube kubectl get componentstatuses NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"}
ワーカーノードの表示
- kubectl get nodes
> minikube kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 36m v1.15.0
ノードの詳細情報
- kubectl describe nodes [ノード名]
基本情報が最初に表示される
Name: minikube Roles: master Labels: beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux kubernetes.io/arch=amd64 kubernetes.io/hostname=minikube kubernetes.io/os=linux node-role.kubernetes.io/master= Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock node.alpha.kubernetes.io/ttl: 0 volumes.kubernetes.io/controller-managed-attach-detach: true CreationTimestamp: Mon, 05 Aug 2019 23:17:24 +0900 Taints: <none> Unschedulable: false
ノード上で動いているオペレーションの情報が表示される
- それぞれのノードが十分なディスクとメモリを持っているか
- Kubernatesマスターに対して正常であるか
Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- MemoryPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Tue, 13 Aug 2019 01:01:05 +0900 Mon, 05 Aug 2019 23:17:15 +0900 KubeletReady kubelet is posting ready status Addresses: InternalIP: 10.0.2.15 Hostname: minikube
マシンのキャパシティ情報の表示
Capacity: cpu: 2 ephemeral-storage: 17784772Ki hugepages-2Mi: 0 memory: 2038624Ki pods: 110 Allocatable: cpu: 2 ephemeral-storage: 16390445849 hugepages-2Mi: 0 memory: 1936224Ki pods: 110
ノード上のソフトウェアバージョンの表示
System Info: Machine ID: 7ec5a55cfdc14693866eccf4e9a1228f System UUID: 2C88347D-32CC-4F26-9AEE-1FED259A233C Boot ID: 1da81daa-4519-4f04-afe0-64efecedd7e7 Kernel Version: 4.15.0 OS Image: Buildroot 2018.05.3 Operating System: linux Architecture: amd64 Container Runtime Version: docker://18.9.6 Kubelet Version: v1.15.0 Kube-Proxy Version: v1.15.0
ノード上で動いているPod情報の表示
Non-terminated Pods: (9 in total) Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE --------- ---- ------------ ---------- --------------- ------------- --- kube-system coredns-5c98db65d4-j24hp 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 7d1h kube-system coredns-5c98db65d4-phtm8 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 7d1h kube-system etcd-minikube 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h kube-system kube-addon-manager-minikube 5m (0%) 0 (0%) 50Mi (2%) 0 (0%) 7d1h kube-system kube-apiserver-minikube 250m (12%) 0 (0%) 0 (0%) 0 (0%) 7d1h kube-system kube-controller-manager-minikube 200m (10%) 0 (0%) 0 (0%) 0 (0%) 7d1h kube-system kube-proxy-wrgp5 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h kube-system kube-scheduler-minikube 100m (5%) 0 (0%) 0 (0%) 0 (0%) 7d1h kube-system storage-provisioner 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7d1h Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 755m (37%) 0 (0%) memory 190Mi (10%) 340Mi (17%) ephemeral-storage 0 (0%) 0 (0%) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeHasSufficientMemory 7d1h (x8 over 7d1h) kubelet, minikube Node minikube status is now: NodeHasSufficientMemory Normal NodeHasNoDiskPressure 7d1h (x8 over 7d1h) kubelet, minikube Node minikube status is now: NodeHasNoDiskPressure Normal NodeHasSufficientPID 7d1h (x7 over 7d1h) kubelet, minikube Node minikube status is now: NodeHasSufficientPID Normal Starting 7d1h kube-proxy, minikube Starting kube-proxy. Normal Starting 12m kubelet, minikube Starting kubelet. Normal NodeHasSufficientMemory 12m (x8 over 12m) kubelet, minikube Node minikube status is now: NodeHasSufficientMemory Normal NodeHasNoDiskPressure 12m (x8 over 12m) kubelet, minikube Node minikube status is now: NodeHasNoDiskPressure Normal NodeHasSufficientPID 12m (x7 over 12m) kubelet, minikube Node minikube status is now: NodeHasSufficientPID Normal NodeAllocatableEnforced 12m kubelet, minikube Updated Node Allocatable limit across pods Normal Starting 11m kube-proxy, minikube Starting kube-proxy
クラスタのコンポーネント
- Kubernetesクラスタを構成する多くのコンポーネントが、Kubernetes自体を使ってデプロイされる
- kube-system Namesspace内で動作
Kubernetes proxy
- クラスタ内のロードバランスされたServiceにネットワークトラフィックをルーティング
- クラスタ内の各ノードで動いている必要がある
- DaemonSetというAPIオブジェクトが多くのクラスタではノードでプロキシを動作させるために利用される
kubectlコマンド
Namespace
- クラスタ内のオブジェクトを構造化
- kubectlはデフォルトではdefaultというNamespaceとやり取り
- --namespace で指定できる
Context
- デフォルトのNamespaceを恒久的に変更したい場合
- $HOME/.kube/config に保存される
Kubernetes APIオブジェクトの参照
- Kubernetes上にあるものは、すべてRESTFulリソースであらわされる
© 2006 矢木浩人