Mercurial > hg > Papers > 2020 > mk-sigiot
changeset 29:01e61c619a1b
update slide
author | Ken Miyahira <e175733@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 01 Sep 2020 15:23:40 +0900 |
parents | 1c5b6f768ae2 |
children | 17d034fa49be |
files | slide/slide.html slide/slide.md |
diffstat | 2 files changed, 109 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/slide/slide.html Tue Sep 01 14:07:01 2020 +0900 +++ b/slide/slide.html Tue Sep 01 15:23:40 2020 +0900 @@ -373,6 +373,8 @@ " data-marpit-pagination="19" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>サービスの使用例</h1> +<p>Web コンソールからコンテナを作成する例である。</p> +<p><img src="images/create2.png" alt="w:1000 H:700" style="width:1000px;" /></p> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="default" data-style="section { background-color: #FFFFFF; @@ -381,8 +383,8 @@ " data-marpit-pagination="20" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>サービスの使用例</h1> -<p>Web コンソールからコンテナを作成する例である。</p> -<p><img src="images/create2.png" alt="w:900 H:600" style="width:900px;" /></p> +<p>コンテナ作成時に GPU を使用するにチェックを入れることで, コンテナから GPU を利用することができる。</p> +<p><img src="images/ope.png" alt="w:850 h:530" style="width:850px;height:530px;" /></p> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-theme="default" data-style="section { background-color: #FFFFFF; @@ -391,8 +393,13 @@ " data-marpit-pagination="21" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>サービスの使用例</h1> -<p>コンテナ作成時に GPU を使用するにチェックを入れることで, コンテナから GPU を利用することができる。</p> -<p><img src="images/ope.png" alt="w:850 h:530" style="width:850px;height:530px;" /></p> +<p>Kubernetes で作成したコンテナには, 手元の PC からコンテナの操作を行うことができる。</p> +<p><img src="images/kube.png" alt="" /></p> +<pre><code class="language-shell"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-meta">></span><span class="bash">>> kube get pods </span> +NAME READY STATUS RESTARTS AGE +e175733-web1-7b88fb4b6b-sdnnb 1/1 Running 0 104s +e175733-web2-6775767cc8-4rmt9 1/1 Running 0 92s +</span></span></foreignObject></svg></code></pre> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-theme="default" data-style="section { background-color: #FFFFFF; @@ -400,13 +407,16 @@ } " data-marpit-pagination="22" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> -<h1>サービスの使用例</h1> -<p><img src="images/kube.png" alt="" /></p> -<pre><code class="language-shell"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-meta">></span><span class="bash">>> kube get pods </span> -NAME READY STATUS RESTARTS AGE -e175733-web1-7b88fb4b6b-sdnnb 1/1 Running 0 104s -e175733-web2-6775767cc8-4rmt9 1/1 Running 0 92s -</span></span></foreignObject></svg></code></pre> +<h1>比較</h1> +<ul> +<li>本コースで利用している VM 貸出サービス +<ul> +<li>コンテナに使用する Docker イメージで構築されたアプリケーションに限定される</li> +<li>Docker イメージを作成しなければいけないため, Docker について学習する必要がある</li> +<li>他のユーザにイメージを共有することで同じ環境を利用することができる</li> +</ul> +</li> +</ul> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-theme="default" data-style="section { background-color: #FFFFFF; @@ -415,8 +425,19 @@ " data-marpit-pagination="23" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>比較</h1> +<p>本コースでは VM 貸出サービス以外にコンテナを利用できるサービスもある。</p> <ul> -<li>本コースで利用している VM 貸出サービス</li> +<li>ie-docker +<ul> +<li>Docker をラップしたツールであり, CLI から利用できる</li> +<li>ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない</li> +</ul> +</li> +<li>digdog +<ul> +<li>Kubernetes を利用したコンテナ貸出サービスである</li> +</ul> +</li> </ul> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-theme="default" data-style="section { @@ -429,9 +450,17 @@ <ul> <li> <p>ie-docker</p> +<ul> +<li>Docker Hub に登録されているイメージ, または作成したイメージを利用することができる</li> +<li>管理者の負担が少なくなる</li> +</ul> </li> <li> <p>digdog</p> +<ul> +<li>Docker Hub に登録されているイメージを利用できる</li> +<li>Docker にも対応している</li> +</ul> </li> </ul> </section> @@ -443,7 +472,12 @@ ;"> <h1>比較</h1> <ul> -<li>クラウドサービス</li> +<li>クラウドサービス +<ul> +<li>オンプレミス環境のため利用の制限がない</li> +<li>物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築が必要である</li> +</ul> +</li> </ul> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-theme="default" data-style="section { @@ -453,6 +487,27 @@ " data-marpit-pagination="26" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>改善点</h1> +<ul> +<li>データの永続化 +<ul> +<li>Singularity でデータの永続化はできるが, Docker や Kubernetes のコンテナでは永続化ができない</li> +<li>学生のディレクトリに保存するなどの設定が必要</li> +</ul> +</li> +<li>イメージの管理 +<ul> +<li>Docker イメージ, Singularity イメージで容量を圧迫する可能性がある</li> +<li>使用されていないイメージを削除するなどの対策が必要</li> +<li>Docker イメージのセキュリティ対策を考える必要</li> +</ul> +</li> +<li>リソースの占有 +<ul> +<li>ユーザごとにリソースの制限</li> +<li>GPU などをジョブスケジューラで管理する</li> +</ul> +</li> +</ul> </section> </foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-theme="default" data-style="section { background-color: #FFFFFF; @@ -461,6 +516,11 @@ " data-marpit-pagination="27" data-marpit-pagination-total="27" style="--paginate:true;--theme:default; ;"> <h1>まとめ</h1> +<ul> +<li>本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った</li> +<li>学生がコンテナ技術を用いて学習環境を利用できるサービスの実装をすることができた</li> +<li>今後テスト環境にデプロイを行い, ユーザやシステム管理チームからのフィードバックをもらい, 改善や実証実験を目指す</li> +</ul> </section> <script>!function(){"use strict";let t=void 0;function e(e){let r=!1;Array.from(document.querySelectorAll("svg[data-marpit-svg]"),i=>{const{children:o,clientHeight:n,clientWidth:a,viewBox:s}=i;i.style.transform||(i.style.transform="translateZ(0)");const l=e||window!==window.parent&&window.parent.marpitSVGPolyfillZoomFactor||i.currentScale||1;t!==l&&(t=l,r=l);const c=s.baseVal.width/l,d=s.baseVal.height/l,p=Math.min(n/d,a/c);for(let t=0;t<o.length;t+=1){const{style:e}=o[t].firstChild;e.position||(e.position="fixed"),e.transformOrigin||(e.transformOrigin="0 0"),e.transform=`scale(${p}) translateZ(0)`}}),!1!==r&&Object.defineProperty(window,"marpitSVGPolyfillZoomFactor",{configurable:!0,value:r})}const r=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function i(t=!0){for(const t of"Apple Computer, Inc."===navigator.vendor?[e]:[])t();Array.from(document.querySelectorAll('svg[data-marp-fitting="svg"]'),t=>{var e;const i=t.firstChild,o=i.firstChild,{scrollWidth:n,scrollHeight:a}=o;let s,l=1;if(t.hasAttribute("data-marp-fitting-code")&&(s=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(s=t.parentElement),s){const t=getComputedStyle(s),e=Math.ceil(s.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(l=e)}const c=Math.max(n,l),d=Math.max(a,1),p=`0 0 ${c} ${d}`;r(i,"width",""+c),r(i,"height",""+d),r(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),r(t,"viewBox",p)&&t.classList.toggle("__reflow__")}),t&&window.requestAnimationFrame(()=>i(t))}!function(){if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");window.marpCoreBrowserScript?console.warn("Marp Core's browser script has already executed."):(Object.defineProperty(window,"marpCoreBrowserScript",{value:!0}),i())}()}(); </script></foreignObject></svg></div><script>!function(){"use strict";var e=function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),a=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),s={},i=function(e,t){return(t=t||{}).index=a.indexOf(e),t.slide=e,t},o=function(e,t){s[e]=(s[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(s[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){a[e]&&(n&&l("deactivate",i(n,t)),n=a[e],l("activate",i(n,t)))},d=function(e,t){var r=a.indexOf(n)+e;l(e>0?"next":"prev",i(n,t))&&c(r,t)},u={off:o,on:function(e,t){return(s[e]||(s[e]=[])).push(t),o.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return a.indexOf(n);l("slide",i(a[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:a,destroy:function(e){l("destroy",i(n,e)),s={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach(e=>e.classList.add("bespoke-marp-slide")),e.on("activate",t=>{const n=t.slide,r=!n.classList.contains("bespoke-marp-active");e.slides.forEach(e=>{e.classList.remove("bespoke-marp-active"),e.setAttribute("aria-hidden","true")}),n.classList.add("bespoke-marp-active"),n.removeAttribute("aria-hidden"),r&&(n.classList.add("bespoke-marp-active-ready"),document.body.clientHeight,n.classList.remove("bespoke-marp-active-ready"))})}function n(e){let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map(e=>[null,...e.querySelectorAll("[data-marpit-fragment]")])});const r=r=>void 0!==e.fragments[t][n+r],a=(r,a)=>{t=r,n=a,e.fragments.forEach((e,t)=>{e.forEach((e,n)=>{if(null==e)return;const s=t<r||t===r&&n<=a;e.setAttribute("data-bespoke-marp-fragment",s?"active":"inactive"),t===r&&n===a?e.setAttribute("data-bespoke-marp-current-fragment","current"):e.removeAttribute("data-bespoke-marp-current-fragment")})}),e.fragmentIndex=a;const s={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:a};e.fire("fragment",s)};e.on("next",({fragment:s=!0})=>{if(s){if(r(1))return a(t,n+1),!1;const s=t+1;e.fragments[s]&&a(s,0)}else{const r=e.fragments[t].length;if(n+1<r)return a(t,r-1),!1;const s=e.fragments[t+1];s&&a(t+1,s.length-1)}}),e.on("prev",({fragment:s=!0})=>{if(r(-1)&&s)return a(t,n-1),!1;const i=t-1;e.fragments[i]&&a(i,e.fragments[i].length-1)}),e.on("slide",({index:t,fragment:n})=>{let r=0;if(void 0!==n){const a=e.fragments[t];if(a){const{length:e}=a;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}a(t,r)}),a(0,0)}var r=function(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}((function(e){
--- a/slide/slide.md Tue Sep 01 14:07:01 2020 +0900 +++ b/slide/slide.md Tue Sep 01 15:23:40 2020 +0900 @@ -254,15 +254,9 @@ # サービスの使用例 - - ---- - -# サービスの使用例 - Web コンソールからコンテナを作成する例である。 -![w:900 H:600](images/create2.png) +![w:1000 H:700](images/create2.png) --- @@ -276,6 +270,8 @@ # サービスの使用例 +Kubernetes で作成したコンテナには, 手元の PC からコンテナの操作を行うことができる。 + ![](images/kube.png) ```shell @@ -290,28 +286,60 @@ # 比較 - 本コースで利用している VM 貸出サービス + - コンテナに使用する Docker イメージで構築されたアプリケーションに限定される + - Docker イメージを作成しなければいけないため, Docker について学習する必要がある + - 他のユーザにイメージを共有することで同じ環境を利用することができる + +--- + +# 比較 + +本コースでは VM 貸出サービス以外にコンテナを利用できるサービスもある。 +- ie-docker + - Docker をラップしたツールであり, CLI から利用できる + - ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない +- digdog + - Kubernetes を利用したコンテナ貸出サービスである --- # 比較 - ie-docker + - Docker Hub に登録されているイメージ, または作成したイメージを利用することができる + - 管理者の負担が少なくなる - digdog + - Docker Hub に登録されているイメージを利用できる + - Docker にも対応している --- # 比較 - クラウドサービス + - オンプレミス環境のため利用の制限がない + - 物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築が必要である --- # 改善点 +- データの永続化 + - Singularity でデータの永続化はできるが, Docker や Kubernetes のコンテナでは永続化ができない + - 学生のディレクトリに保存するなどの設定が必要 +- イメージの管理 + - Docker イメージ, Singularity イメージで容量を圧迫する可能性がある + - 使用されていないイメージを削除するなどの対策が必要 + - Docker イメージのセキュリティ対策を考える必要 +- リソースの占有 + - ユーザごとにリソースの制限 + - GPU などをジョブスケジューラで管理する --- # まとめ - +- 本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った +- 学生がコンテナ技術を用いて学習環境を利用できるサービスの実装をすることができた +- 今後テスト環境にデプロイを行い, ユーザやシステム管理チームからのフィードバックをもらい, 改善や実証実験を目指す