更新時のコマンドを履歴として残すために付けるオプションで、後ほど参照します。configuredすると徐々に新しいReplicaSet、Podが立ち上がり、古いPodと入れ替わっていきます。立ち上がっていき最終的に全て入れ替わっているのが分かります。これをローリングアップデートと言います。ReplicaSetは今立ち上がっているPodを更新するのに対して、Deploymentは新しいPodを立ち上げ、ヘルスチェックなどをしながら反映していってくれます。実用ではPodやReplicaSetを直接扱うことなく、このDeploymentなどのリソースを通して構成することが基本のようです。下記のコマンドで更新状況を確認することもできます。outロールバックDeploymentは、更新した後にロールバックすることもできます。コマンドで更新した履歴の確認をします。オプションを付けた場合に記録される内容です。2が現在の状態、1が更新前の状態になります。ロールバックは下記のコマンドで実行します。戻したいリビジョン番号を指定します。"sample-deployment"そして、ロールバックが完了すると下記のようになります。Podが復活していますね。Service前述しましたが、Pod内の各コンテナに対して直接HTTP等でアクセスすることはできません。そこでServiceというリソースを使います。これは各Podへのロードバランシングを提供する機能です。ClusterIPでのロードバランシングまず、下記のマニフェストファイルでServiceを作ってみます。Serviceを指定することで作成できます。指定しているのが、ロードバランシングの対象とするリソースのラベルです。先ほどDeploymentで作った「sample-app」を対象としています。これはServiceに、同じクラスタの中からのみアクセスできるIPを持ったロードバランサーを作ってくれます。このServiceではまだローカル環境から直接アクセスすることはできません。このServiceを作成します。createdそして作成したServiceの情報を確認します。リソースの詳細を確認するコマンドで、「リソースの種類」「リソース名」をパラメータに渡すことで実行します。入っている値が振り分け先のPodのIPになります。下記のコマンドでここで紐付いている想定のPodのIPを確認してみましょう。10.1.0.149ServiceのEndpointsで入っていたIPと一致します。このServiceは同じクラスタ内からのみアクセスできるので、下記のように一時的なPodを作成して、そこ経由で先ほど確認したServiceのIPに対してcurlコマンドを実行してみます。Deployment!!80、8080それぞれのポートでレスポンスが返ってきます。これだけだとロードバランシングが行われているのが分かりづらいので、下記のコマンドで各Podのnginxのindex.htmlを、それぞれのhostnameが表示されるように変更します。doneそして何度かcurlを実行してみると、下記のように各Podに分散してアクセスしていることが分かります。Serviceを使ってクラスタ外からのアクセスを可能にします。Serviceは、Kubernetesのクラスタノードの指定されたポートに対する全てのリクエストを受け、ロードバランシングする機能を提供します。下記のマニフェストファイルを作ってください。いくつかのポートを記述しています。それぞれport・・・ClusterIP側で受け付けるポートtargetPort・・・振り分け先のコンテナで受け付けるポートnodePort・・・Node側で受け付けるポートになります。いう流れで転送されます。来づらいと思うので、実際に作って見てみます。Serviceの詳細確認。入っている値が、クラスタのIPになります。10.1.0.150:80(targetPortで指定したポート)の流れで転送されることになります。実際にローカルからcurlコマンドでアクセスしてみます。http://localhost:30080sample-deployment-5b447f977f-xmz4n先ほどと同じように、各Podにロードバランシングされてnginxのコンテナにアクセスしていますね。30180ポートにアクセスすると、goのコンテナに転送されることも確認できます。Deployment!!まとめすごくざっくりですが、ローカルにKubernetesで環境を作り、HTTPアクセスできるところまでまとめてみました。今回は若干間飛ばして書いてあるところはあったりとか、Podの設計とかは全く触れずとりあえずdocker-composeで作っていたものをそのままKubernetes化したりとかざっくりと動かしているので、今度はもっとちゃんとして環境を作ります。次はPodの設計とかを考えながら、Kotlinでデータベースとかアクセスして動かせる環境を作ろうかなと思っています。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。