tag:crieit.net,2005:https://crieit.net/tags/k8s/feed
「k8s」の記事 - Crieit
Crieitでタグ「k8s」に投稿された最近の記事
2019-06-22T23:36:56+09:00
https://crieit.net/tags/k8s/feed
tag:crieit.net,2005:PublicArticle/15151
2019-06-22T23:35:52+09:00
2019-06-22T23:36:56+09:00
https://crieit.net/posts/minikube-2
minikubeを使ってみよう【その2】
<h1 id="レプリカの数を増やしてみよう"><a href="#%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E3%81%AE%E6%95%B0%E3%82%92%E5%A2%97%E3%82%84%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86">レプリカの数を増やしてみよう</a></h1>
<h2 id="レプリカとは"><a href="#%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E3%81%A8%E3%81%AF">レプリカとは</a></h2>
<p>アプリケーションコンテナのクローンです。<br />
レプリカを2に設定すると、同じアプリケーションコンテナが2つ起動します。<br />
以下のような用途があります。</p>
<ul>
<li>コンテナの起動に失敗した場合
<ul>
<li>残りのコンテナでサービスを継続する</li>
</ul></li>
<li>アプリケーションのアップデート中にサービスを中断したくない場合
<ul>
<li>更新途中のコンテナ以外でサービスを継続する</li>
</ul></li>
</ul>
<h2 id="レプリカの数を増やす"><a href="#%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E3%81%AE%E6%95%B0%E3%82%92%E5%A2%97%E3%82%84%E3%81%99">レプリカの数を増やす</a></h2>
<p>運用で言う所の<strong>系</strong>の数ですね。</p>
<pre><code># hello-minikubeというコンテナを4つに増やす
$ kubectl scale deployments/hello-minikube --replicas=4
# 結果を確認する
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-minikube 4 4 4 4 23h
# podの中身を確認する
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
hello-minikube-78c9fc5f89-68jtm 1/1 Running 0 14m 172.17.0.7 minikube
hello-minikube-78c9fc5f89-6gsm8 1/1 Running 0 14m 172.17.0.8 minikube
hello-minikube-78c9fc5f89-nwgvw 1/1 Running 1 23h 172.17.0.4 minikube
hello-minikube-78c9fc5f89-x7m9g 1/1 Running 1 23h 172.17.0.2 minikube
</code></pre>
<h1 id="アプリケーションをアップデートする"><a href="#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B">アプリケーションをアップデートする</a></h1>
<p>hello-minikubeというdockerイメージを使っていたpod内のアプリケーションを<code>jocatalin/kubernetes-bootcamp</code>というイメージに置き換えてみます。</p>
<pre><code>$ kubectl set image deployments/hello-minikube hello-minikube=jocatalin/kubernetes-bootcamp:v2
# podの状況を取得する
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
hello-minikube-5dbc4c9877-c57t4 0/1 ContainerCreating 0 8s <none> minikube
hello-minikube-5dbc4c9877-v78sv 0/1 ContainerCreating 0 8s <none> minikube
hello-minikube-78c9fc5f89-68jtm 1/1 Running 0 21m 172.17.0.7 minikube
hello-minikube-78c9fc5f89-nwgvw 1/1 Running 1 23h 172.17.0.4 minikube
hello-minikube-78c9fc5f89-x7m9g 1/1 Running 1 23h 172.17.0.2 minikube
</code></pre>
<p>更新作業中はいくつかコンテナを残した状態で順番に更新されていきます。</p>
<h1 id="アプリケーションのロールバック"><a href="#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF">アプリケーションのロールバック</a></h1>
<p><code>rollout undo</code>コマンドで元に戻します。</p>
<pre><code>$ kubectl rollout undo deployments/hello-minikube
deployment.apps "hello-minikube"
# podの状況を確認する
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-5dbc4c9877-7zsqq 1/1 Terminating 0 6m
hello-minikube-5dbc4c9877-c57t4 1/1 Running 0 6m
hello-minikube-5dbc4c9877-jspcm 1/1 Terminating 0 6m
hello-minikube-5dbc4c9877-v78sv 1/1 Terminating 0 6m
hello-minikube-78c9fc5f89-5rfzt 0/1 ContainerCreating 0 2s
hello-minikube-78c9fc5f89-cf2lk 1/1 Running 0 4s
hello-minikube-78c9fc5f89-jrprp 1/1 Running 0 4s
hello-minikube-78c9fc5f89-k7pq4 0/1 ContainerCreating 0 1s
</code></pre>
<p>並行してロールバックが行われているのがわかります。</p>
<h1 id="参考リンク"><a href="#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82%AF">参考リンク</a></h1>
<p><a target="_blank" rel="nofollow noopener" href="https://dev.classmethod.jp/cloud/kubernetes-tutorial-4/">[第4回]Kubernetesの公式チュートリアルをやって基本を押さえる -アプリのアップデート</a></p>
ckoshien
tag:crieit.net,2005:PublicArticle/15141
2019-06-22T00:21:08+09:00
2019-06-23T22:09:26+09:00
https://crieit.net/posts/minikube-1
minikubeを使ってみよう【その1】
<h1 id="kubernetesって?"><a href="#kubernetes%E3%81%A3%E3%81%A6%EF%BC%9F">kubernetesって?</a></h1>
<p>dockerなどを使ってコンテナ化したアプリケーションの管理を行うOSSのオーケストレーションツール。<br />
<img src="https://d33wubrfki0l68.cloudfront.net/1567471e7c58dc9b7d9c65dcd54e60cbf5870daa/a2680/ja/_common-resources/images/flower.png" alt="image" /></p>
<h2 id="kubernetesのアイコン、何に見えますか?"><a href="#kubernetes%E3%81%AE%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%80%81%E4%BD%95%E3%81%AB%E8%A6%8B%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F">kubernetesのアイコン、何に見えますか?</a></h2>
<p>船の舵だと思った方、正解です。<br />
dockerは多数の<strong>コンテナ</strong>を積んだ<strong>貨物船</strong>、<strong>kubernetes</strong>は<strong>装舵手</strong>です。</p>
<p><a href="https://crieit.now.sh/upload_images/5b29b58a7326800278a9fd51aa7c6d9f5d0f79fc71ad2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b29b58a7326800278a9fd51aa7c6d9f5d0f79fc71ad2.png?mw=700" alt="image" /></a></p>
<h1 id="minikubeって?"><a href="#minikube%E3%81%A3%E3%81%A6%EF%BC%9F">minikubeって?</a></h1>
<p><a target="_blank" rel="nofollow noopener" href="https://kubernetes.io/ja/docs/setup/minikube/">公式</a><br />
開発・テスト向けの<strong>Kubernetes</strong>環境を構築するツール。</p>
<h1 id="macにminikubeをインストール"><a href="#mac%E3%81%ABminikube%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">macにminikubeをインストール</a></h1>
<h2 id="前提"><a href="#%E5%89%8D%E6%8F%90">前提</a></h2>
<p>virtualboxがインストールされていること。</p>
<h2 id="brewでインストール"><a href="#brew%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">brewでインストール</a></h2>
<pre><code>$ brew cask install minikube
</code></pre>
<h2 id="minikubeの起動"><a href="#minikube%E3%81%AE%E8%B5%B7%E5%8B%95">minikubeの起動</a></h2>
<pre><code>$ minikube start
minikube v1.1.1 on darwin (amd64)
💿 Downloading Minikube ISO ...
131.29 MB / 131.29 MB [============================================] 100.00% 0s
🔥 Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
🐳 Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6
💾 Downloading kubelet v1.14.3
💾 Downloading kubeadm v1.14.3
🚜 Pulling images ...
🚀 Launching Kubernetes ...
⌛ Verifying: apiserver proxy etcd scheduler controller dns
🏄 Done! kubectl is now configured to use "minikube"
</code></pre>
<p>minikubeイメージのダウンロードとvirtual box VMのcreateが始まるので多少時間がかかります。</p>
<h2 id="コンテナ起動"><a href="#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E8%B5%B7%E5%8B%95">コンテナ起動</a></h2>
<pre><code>$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
</code></pre>
<p>k8s.gcr.io/echoserver:1.4のイメージを使って8080ポートでhello-minikubeというコンテナを起動する。</p>
<h2 id="podの状態確認"><a href="#pod%E3%81%AE%E7%8A%B6%E6%85%8B%E7%A2%BA%E8%AA%8D">podの状態確認</a></h2>
<pre><code>$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-minikube-78c9fc5f89-x7m9g 1/1 Running 0 1m
</code></pre>
<h2 id="deploymentの状態確認"><a href="#deployment%E3%81%AE%E7%8A%B6%E6%85%8B%E7%A2%BA%E8%AA%8D">deploymentの状態確認</a></h2>
<pre><code>$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-minikube 1 1 1 1 1m
</code></pre>
<h2 id="コンテナを外部に公開"><a href="#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E5%A4%96%E9%83%A8%E3%81%AB%E5%85%AC%E9%96%8B">コンテナを外部に公開</a></h2>
<pre><code>$ kubectl expose deployment hello-minikube --type=NodePort
</code></pre>
<p>hello-minikubeというコンテナをNodePortを使って外部に公開します。</p>
<h2 id="サービスの削除・deploymentの削除"><a href="#%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E5%89%8A%E9%99%A4%E3%83%BBdeployment%E3%81%AE%E5%89%8A%E9%99%A4">サービスの削除・deploymentの削除</a></h2>
<pre><code>$ kubectl delete service hello-node
$ kubectl delete deployment hello-node
</code></pre>
<h2 id="minikubeの仮想マシン(VM)を停止:"><a href="#minikube%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%28VM%29%E3%82%92%E5%81%9C%E6%AD%A2%3A">minikubeの仮想マシン(VM)を停止:</a></h2>
<pre><code>$ minikube stop
</code></pre>
<h2 id="minikubeのVMを削除"><a href="#minikube%E3%81%AEVM%E3%82%92%E5%89%8A%E9%99%A4">minikubeのVMを削除</a></h2>
<pre><code>$ minikube delete
</code></pre>
<h2 id="(番外編)minikubeのdashboardを見る"><a href="#%28%E7%95%AA%E5%A4%96%E7%B7%A8%29minikube%E3%81%AEdashboard%E3%82%92%E8%A6%8B%E3%82%8B">(番外編)minikubeのdashboardを見る</a></h2>
<pre><code>$ minikube dashboard
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/3c94d8c0d18fa9ffa37d49f02fe946c55d0cf4ea76674.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3c94d8c0d18fa9ffa37d49f02fe946c55d0cf4ea76674.png?mw=700" alt="image" /></a></p>
<h1 id="参考リンク"><a href="#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82%AF">参考リンク</a></h1>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://knowledge.sakura.ad.jp/15320/">簡単にローカルKubernetes環境を構築できるツール「Minikube」</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://dev.classmethod.jp/cloud/minikube/">Minikubeを使ってローカル環境にKubernetes環境を用意する<br />
</a></li>
</ul>
ckoshien