@@ -3,26 +3,34 @@ title: Deploymentを作成するためにkubectlを使う
3
3
weight : 10
4
4
---
5
5
6
- ## {{% heading "目的 " %}}
6
+ ## {{% heading "objectives " %}}
7
7
8
8
* アプリケーションのデプロイについて学ぶ。
9
9
* kubectlを使って、Kubernetes上にはじめてのアプリケーションをデプロイする。
10
10
11
- ## KubernetesのDeployments
11
+ ## KubernetesのDeployment
12
12
13
13
{{% alert %}}
14
14
_ Deploymentは、アプリケーションのインスタンスを作成および更新する責務があります。_
15
15
{{% /alert %}}
16
16
17
17
{{< note >}}
18
- このチュートリアルでは、AMD64アーキテクチャを必要とするコンテナを使用します。異なるCPUアーキテクチャのコンピュータでminikubeを使用する場合は、AMD64をエミュレートできるドライバでminikubeを使用してみてください。例えば、Docker Desktopドライバはこれが可能です。
18
+ このチュートリアルでは、AMD64アーキテクチャを必要とするコンテナを使用します。
19
+ 異なるCPUアーキテクチャのコンピューターでminikubeを使用する場合は、AMD64をエミュレートできるドライバーでminikubeを使用してみてください。
20
+ 例えば、Docker Desktopドライバーはこれが可能です。
19
21
{{< /note >}}
20
22
21
- [ 実行中のKubernetesクラスター] ( /docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/ ) を入手すると、その上にコンテナ化アプリケーションをデプロイすることができます。そのためには、Kubernetesの** Deployment** の設定を作成します。DeploymentはKubernetesにあなたのアプリケーションのインスタンスを作成し、更新する方法を指示します。Deploymentを作成すると、KubernetesコントロールプレーンはDeployment内に含まれるアプリケーションインスタンスをクラスター内の個々のノードで実行するようにスケジュールします。
23
+ [ 実行中のKubernetesクラスター] ( /docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/ ) を入手すると、その上にコンテナ化アプリケーションをデプロイすることができます。
24
+ そのためには、Kubernetesの** Deployment** の設定を作成します。
25
+ DeploymentはKubernetesにあなたのアプリケーションのインスタンスを作成し、更新する方法を指示します。
26
+ Deploymentを作成すると、KubernetesコントロールプレーンはDeployment内に含まれるアプリケーションインスタンスをクラスター内の個々のノードで実行するようにスケジュールします。
22
27
23
- アプリケーションインスタンスが作成されると、Kubernetes Deploymentコントローラーは、それらのインスタンスを継続的に監視します。インスタンスをホストしているノードが停止、削除された場合、Deploymentコントローラーはそのインスタンスをクラスター内の別のノード上のインスタンスと置き換えます。** これは、マシンの故障やメンテナンスに対処するためのセルフヒーリングの仕組みを提供しています。**
28
+ アプリケーションインスタンスが作成されると、Kubernetes Deploymentコントローラーは、それらのインスタンスを継続的に監視します。
29
+ インスタンスをホストしているノードが停止、削除された場合、Deploymentコントローラーはそのインスタンスをクラスター内の別のノード上のインスタンスと置き換えます。
30
+ ** これは、マシンの故障やメンテナンスに対処するためのセルフヒーリングの仕組みを提供しています。**
24
31
25
- オーケストレーションが登場する前の世界では、インストールスクリプトを使用してアプリケーションを起動することはよくありましたが、マシン障害が発生した場合に復旧する事はできませんでした。アプリケーションのインスタンスを作成し、それらをノード間で実行し続けることで、Kubernetes Deploymentsはアプリケーションの管理に根本的に異なるアプローチを提供します。
32
+ オーケストレーションが登場する前の世界では、インストールスクリプトを使用してアプリケーションを起動することはよくありましたが、マシン障害が発生した場合に復旧する事はできませんでした。
33
+ アプリケーションのインスタンスを作成し、それらをノード間で実行し続けることで、Kubernetes Deploymentはアプリケーションの管理に根本的に異なるアプローチを提供します。
26
34
27
35
## Kubernetes上にはじめてのアプリケーションをデプロイする
28
36
@@ -32,69 +40,86 @@ _Kubernetesにデプロイするには、アプリケーションをサポート
32
40
33
41
{{< figure src="/docs/tutorials/kubernetes-basics/public/images/module_02_first_app.svg" class="diagram-medium" >}}
34
42
35
- Kubernetesのコマンドラインインターフェースである[ kubectl] ( /docs/reference/kubectl/ ) を使用して、Deploymentを作成、管理できます。` kubectl ` はKubernetes APIを使用してクラスターと対話します。このモジュールでは、Kubernetesクラスターでアプリケーションを実行するDeploymentを作成するために必要な、最も一般的な` kubectl ` コマンドについて学びます。
43
+ Kubernetesのコマンドラインインターフェースである[ kubectl] ( /docs/reference/kubectl/ ) を使用して、Deploymentを作成、管理できます。
44
+ ` kubectl ` はKubernetes APIを使用してクラスターと対話します。
45
+ このモジュールでは、Kubernetesクラスターでアプリケーションを実行するDeploymentを作成するために必要な、最も一般的な` kubectl ` コマンドについて学びます。
36
46
37
- Deploymentを作成するときは、アプリケーションのコンテナイメージと実行するレプリカの数を指定する必要があります。Deploymentを更新することで、あとでその情報を変更できます。ブートキャンプの[ Module 5] ( /docs/tutorials/kubernetes-basics/scale/scale-intro/ ) と[ Module 6] ( /docs/tutorials/kubernetes-basics/update/update-intro/ ) では、Deploymentをどのようにスケール、更新できるかについて説明します。
47
+ Deploymentを作成するときは、アプリケーションのコンテナイメージと実行するレプリカの数を指定する必要があります。
48
+ Deploymentを更新することで、あとでその情報を変更できます。
49
+ ブートキャンプの[ Module 5] ( /docs/tutorials/kubernetes-basics/scale/scale-intro/ ) と[ Module 6] ( /docs/tutorials/kubernetes-basics/update/update-intro/ ) では、Deploymentをどのようにスケール、更新できるかについて説明します。
38
50
39
- 最初のDeploymentには、NGINXを使用して全てのリクエストをエコーバックする、Dockerコンテナにパッケージされたhello-nodeアプリケーションを使用します。(まだhello-nodeアプリケーションを作成して、コンテナを使用してデプロイしていない場合、[ Hello Minikube tutorial] ( /ja/docs/tutorials/hello-minikube/ ) の通りにやってみましょう。)
51
+ 最初のDeploymentには、NGINXを使用して全てのリクエストをエコーバックする、Dockerコンテナにパッケージ化されたhello-nodeアプリケーションを使用します。
52
+ (まだhello-nodeアプリケーションを作成して、コンテナを使用してデプロイしていない場合、[ Hello Minikube tutorial] ( /ja/docs/tutorials/hello-minikube/ ) の通りにやってみましょう。)
40
53
41
- kubectlもインストールされている必要があります。インストールが必要な場合は、[ ツールのインストール] ( /docs/tasks/tools/#kubectl ) からインストールしてください。
54
+ kubectlもインストールされている必要があります。
55
+ インストールが必要な場合は、[ ツールのインストール] ( /docs/tasks/tools/#kubectl ) からインストールしてください。
42
56
43
57
Deploymentが何であるかがわかったので、最初のアプリケーションをデプロイしましょう!
44
58
45
59
### kubectlの基本
46
60
47
61
kubectlコマンドの一般的な書式は` kubectl action resource ` です。
48
62
49
- これは指定された_resource_ (` node ` , ` deployment ` など)に対して指定された_action_ (` create ` , ` describe ` , ` delete ` など)を実行します。指定可能なパラメータに関する追加情報を取得するために、サブコマンドの後に` --help ` を使うこともできます(例:` kubectl get nodes --help ` )。
63
+ これは指定された _ resource_ (` node ` 、` deployment ` など)に対して指定された _ action_ (` create ` 、` describe ` 、` delete ` など)を実行します。
64
+ 指定可能なパラメーターに関する追加情報を取得するために、サブコマンドの後に` --help ` を使うこともできます(例:` kubectl get nodes --help ` )。
50
65
51
- ` kubectl version ` コマンドを実行して、kubectl がクラスタと通信できるように設定されていることを確認してください 。
66
+ ` kubectl version ` コマンドを実行して、kubectlがクラスターと通信できるように設定されていることを確認してください 。
52
67
53
68
kubectlがインストールされていて、クライアントとサーバーの両方のバージョンを確認できることを確認してください。
54
69
55
- クラスタ内のノードを表示するには 、` kubectl get nodes ` コマンドを実行します。
70
+ クラスター内のノードを表示するには 、` kubectl get nodes ` コマンドを実行します。
56
71
57
- 利用可能なノードが表示されます。後で、KubernetesはNodeの利用可能なリソースに基づいてアプリケーションをデプロイする場所を選択します。
72
+ 利用可能なノードが表示されます。
73
+ 後で、KubernetesはNodeの利用可能なリソースに基づいてアプリケーションをデプロイする場所を選択します。
58
74
59
75
### アプリケーションをデプロイする
60
76
61
- 最初のアプリケーションを` kubectl create deployment ` コマンドでKubernetesにデプロイしてみましょう。デプロイ名とアプリケーションイメージの場所を指定する必要があります(Docker Hub外でホストされているイメージはリポジトリの完全なURLを含める必要があります)。
77
+ 最初のアプリケーションを` kubectl create deployment ` コマンドでKubernetesにデプロイしてみましょう。
78
+ デプロイ名とアプリケーションイメージの場所を指定する必要があります(Docker Hub外でホストされているイメージはリポジトリの完全なURLを含める必要があります)。
62
79
63
80
``` shell
64
81
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
65
82
```
66
83
67
- 素晴らしい!deploymentを作成して、最初のアプリケーションをデプロイしました。これによっていくつかのことが実行されました。
84
+ 素晴らしい!Deploymentを作成して、最初のアプリケーションをデプロイしました。
85
+ これによっていくつかのことが実行されました。
68
86
69
- * アプリケーションのインスタンスを実行可能な適切なノードを探しました( 利用可能なノードは1つしかない) 。
87
+ * アプリケーションのインスタンスを実行可能な適切なノードを探しました( 利用可能なノードは1つしかない) 。
70
88
* アプリケーションをそのノードで実行するためのスケジュールを行いました。
71
89
* 必要な場合にインスタンスを新しいノードで再スケジュールするような設定を行いました。
72
90
73
- deploymentの一覧を得るには ` kubectl get deployments ` コマンドを使います。
91
+ Deploymentの一覧を得るには ` kubectl get deployments ` コマンドを使います。
74
92
75
93
``` shell
76
94
kubectl get deployments
77
95
```
78
96
79
- アプリケーションの単一のインスタンスを実行しているdeploymentが1つあることが分かります。インスタンスはノード上のコンテナ内で実行されています。
97
+ アプリケーションの単一のインスタンスを実行しているDeploymentが1つあることが分かります。
98
+ インスタンスはノード上のコンテナ内で実行されています。
80
99
81
100
### アプリケーションを見る
82
101
83
- Kubernetes内部で動作している[ Pod] ( /docs/concepts/workloads/pods/ ) は、プライベートに隔離されたネットワーク上で動作しています。デフォルトでは、同じKubernetesクラスタ内の他のPodやServiceからは見えますが、そのネットワークの外からは見えません。` kubectl ` を使用する場合、アプリケーションと通信するためにAPIエンドポイントを通じてやりとりしています。
102
+ Kubernetes内部で動作している[ Pod] ( /docs/concepts/workloads/pods/ ) は、プライベートに隔離されたネットワーク上で動作しています。
103
+ デフォルトでは、同じKubernetesクラスター内の他のPodやServiceからは見えますが、そのネットワークの外からは見えません。
104
+ ` kubectl ` を使用する場合、アプリケーションと通信するためにAPIエンドポイントを通じてやりとりしています。
84
105
85
- アプリケーションをKubernetesクラスタの外部に公開するための他のオプションについては、後ほど[ Module 4] ( /docs/tutorials/kubernetes-basics/expose/ ) で説明します。また、これは基本的なチュートリアルであるため、ここでは` Pods ` とは何かについては詳しく説明しません。
106
+ アプリケーションをKubernetesクラスターの外部に公開するための他のオプションについては、後ほど[ Module 4] ( /docs/tutorials/kubernetes-basics/expose/ ) で説明します。
107
+ また、これは基本的なチュートリアルであるため、ここでは` Pod ` とは何かについては詳しく説明しません。
86
108
87
- ` kubectl proxy ` コマンドによって、通信をクラスタ全体のプライベートネットワークに転送するプロキシを作成することができます。プロキシはcontrol-Cキーを押すことで終了させることができ、実行中は何も出力されません。
109
+ ` kubectl proxy ` コマンドによって、通信をクラスター全体のプライベートネットワークに転送するプロキシを作成することができます。
110
+ プロキシはcontrol-Cキーを押すことで終了させることができ、実行中は何も出力されません。
88
111
89
112
** プロキシを実行するにはもう一つターミナルウィンドウを開く必要があります。**
90
113
91
114
``` shell
92
115
kubectl proxy
93
116
```
94
117
95
- ホスト(端末)とKubernetesクラスタ間の接続ができました。プロキシによって端末からAPIへの直接アクセスが可能となります。
118
+ ホスト(端末)とKubernetesクラスター間の接続ができました。
119
+ プロキシによって端末からAPIへの直接アクセスが可能となります。
96
120
97
- プロキシエンドポイントを通してホストされている全てのAPIを確認することができます。例えば、` curl ` コマンドを使って、APIを通じて直接バージョンを調べることができます:
121
+ プロキシエンドポイントを通してホストされている全てのAPIを確認することができます。
122
+ 例えば、` curl ` コマンドを使って、APIを通じて直接バージョンを調べることができます。
98
123
99
124
``` shell
100
125
curl http://localhost:8001/version
@@ -119,9 +144,9 @@ echo Name of the Pod: $POD_NAME
119
144
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME :8080/proxy/
120
145
```
121
146
122
- プロキシを使わずに新しいdeploymentにアクセスするには 、[ Module 4] ( /docs/tutorials/kubernetes-basics/expose/ ) で説明するServiceが必要となります 。
147
+ プロキシを使わずに新しいDeploymentにアクセスするには 、[ Module 4] ( /docs/tutorials/kubernetes-basics/expose/ ) で説明するServiceが必要です 。
123
148
124
- ## {{% heading "次のページ " %}}
149
+ ## {{% heading "whatsnext " %}}
125
150
126
151
* チュートリアル [ Podとノードについて] ( /docs/tutorials/kubernetes-basics/explore/explore-intro/ )
127
- * [ Deployments ] ( /docs/concepts/workloads/controllers/deployment/ ) について詳しく学ぶ
152
+ * [ Deployment ] ( /docs/concepts/workloads/controllers/deployment/ ) について詳しく学ぶ
0 commit comments