diff --git a/.nojekyll b/.vuepress/public/.nojekyll similarity index 100% rename from .nojekyll rename to .vuepress/public/.nojekyll diff --git a/CNAME b/.vuepress/public/CNAME similarity index 100% rename from CNAME rename to .vuepress/public/CNAME diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/404.html b/docs/404.html index da93bd3..eaeeeea 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,11 +7,11 @@ - +

404

That's a Four-Oh-Four.
Take me home.
- + diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..5565f60 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +eip.work \ No newline at end of file diff --git a/docs/assets/js/12.fad086d6.js b/docs/assets/js/12.4e570606.js similarity index 98% rename from docs/assets/js/12.fad086d6.js rename to docs/assets/js/12.4e570606.js index 61dcb5a..a753af4 100644 --- a/docs/assets/js/12.fad086d6.js +++ b/docs/assets/js/12.4e570606.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{262:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112353077.b907aa89.png"},263:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112624128.7aa6b8f1.png"},264:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113050608.97e0f110.png"},265:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113155991.f3ecd62f.png"},28:function(t,a,_){t.exports=_.p+"assets/img/image-20190721110355464.25f25dda.png"},328:function(t,a,_){"use strict";_.r(a);var v=_(0),e=Object(v.a)({},function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 配置")]),t._v(" "),v("p",[t._v("配置: Kubernetes ConfigMap")]),t._v(" "),v("h1",{attrs:{id:"查看配置列表"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看配置列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看配置列表")]),t._v(" "),v("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),v("p",[v("img",{attrs:{src:_(28),alt:"image-20190721110355464"}})]),t._v(" "),v("p",[t._v("配置列表位于图中左侧中部,点击 "),v("em",[v("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),v("blockquote",[v("p",[t._v("点击 "),v("strong",[t._v("配置")]),t._v(" 可以刷新该列表")])]),t._v(" "),v("p",[v("img",{attrs:{src:_(262),alt:"image-20190721112353077"}})]),t._v(" "),v("h1",{attrs:{id:"创建配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建配置")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("配置 / 创建")])])]),t._v(" "),v("p",[t._v("填写表单如下所示:")])])]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("字段名称")]),t._v(" "),v("th",[t._v("填写内容")]),t._v(" "),v("th",[t._v("说明")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 内容")]),t._v(" "),v("td",[t._v("configmap")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 名称")]),t._v(" "),v("td",[t._v("EUREKA_URL")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 内容")]),t._v(" "),v("td",[t._v("http://cloud-eureka:9200/eureka")]),t._v(" "),v("td")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(263),alt:"image-20190721112624128"}})]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("保存")])])]),t._v(" "),v("p",[t._v("配置信息创建成功")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(264),alt:"image-20190721113050608"}})]),t._v(" "),v("h1",{attrs:{id:"查看-编辑-删除-配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 配置")]),t._v(" "),v("ul",[v("li",[t._v("点击列表中的 "),v("em",[v("strong",[t._v("my-config-map")])])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(265),alt:"image-20190721113155991"}})]),t._v(" "),v("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{262:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112353077.b907aa89.png"},263:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112624128.7aa6b8f1.png"},264:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113050608.97e0f110.png"},265:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113155991.f3ecd62f.png"},28:function(t,a,_){t.exports=_.p+"assets/img/image-20190721110355464.25f25dda.png"},345:function(t,a,_){"use strict";_.r(a);var v=_(0),e=Object(v.a)({},function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 配置")]),t._v(" "),v("p",[t._v("配置: Kubernetes ConfigMap")]),t._v(" "),v("h1",{attrs:{id:"查看配置列表"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看配置列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看配置列表")]),t._v(" "),v("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),v("p",[v("img",{attrs:{src:_(28),alt:"image-20190721110355464"}})]),t._v(" "),v("p",[t._v("配置列表位于图中左侧中部,点击 "),v("em",[v("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),v("blockquote",[v("p",[t._v("点击 "),v("strong",[t._v("配置")]),t._v(" 可以刷新该列表")])]),t._v(" "),v("p",[v("img",{attrs:{src:_(262),alt:"image-20190721112353077"}})]),t._v(" "),v("h1",{attrs:{id:"创建配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建配置")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("配置 / 创建")])])]),t._v(" "),v("p",[t._v("填写表单如下所示:")])])]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("字段名称")]),t._v(" "),v("th",[t._v("填写内容")]),t._v(" "),v("th",[t._v("说明")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 内容")]),t._v(" "),v("td",[t._v("configmap")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 名称")]),t._v(" "),v("td",[t._v("EUREKA_URL")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 内容")]),t._v(" "),v("td",[t._v("http://cloud-eureka:9200/eureka")]),t._v(" "),v("td")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(263),alt:"image-20190721112624128"}})]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("保存")])])]),t._v(" "),v("p",[t._v("配置信息创建成功")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(264),alt:"image-20190721113050608"}})]),t._v(" "),v("h1",{attrs:{id:"查看-编辑-删除-配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 配置")]),t._v(" "),v("ul",[v("li",[t._v("点击列表中的 "),v("em",[v("strong",[t._v("my-config-map")])])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(265),alt:"image-20190721113155991"}})]),t._v(" "),v("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/14.c7f5522a.js b/docs/assets/js/14.85fae375.js similarity index 80% rename from docs/assets/js/14.c7f5522a.js rename to docs/assets/js/14.85fae375.js index 2d1383c..fa9682b 100644 --- a/docs/assets/js/14.c7f5522a.js +++ b/docs/assets/js/14.85fae375.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{28:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110355464.25f25dda.png"},284:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110543437.8cbe188d.png"},285:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111011798.b9cc73b4.png"},286:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111540512.b0a58451.png"},287:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111642221.f9c06dc3.png"},339:function(t,e,r){"use strict";r.r(e);var s=r(0),v=Object(s.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" Secrets")]),t._v(" "),s("h1",{attrs:{id:"查看-secrets-列表"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-secrets-列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看 Secrets 列表")]),t._v(" "),s("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:r(28),alt:"image-20190721110355464"}})]),t._v(" "),s("p",[t._v("Secrets 列表位于图中左上角,点击 "),s("em",[s("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),s("blockquote",[s("p",[t._v("点击 "),s("strong",[t._v("Secrets")]),t._v(" 可以刷新该列表")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(284),alt:"image-20190721110543437"}})]),t._v(" "),s("h1",{attrs:{id:"创建-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建 Secrets")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("Secrets / 创建")])])]),t._v(" "),s("p",[t._v("填写表单如下:")])])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("my-docker-repository")]),t._v(" "),s("td",[t._v("Secrets的名称")])]),t._v(" "),s("tr",[s("td",[t._v("类型")]),t._v(" "),s("td",[t._v("docker仓库密码")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker server")]),t._v(" "),s("td",[t._v("https://my-docker-repository.com")]),t._v(" "),s("td",[t._v("请填写 docker 仓库的全路径")])]),t._v(" "),s("tr",[s("td",[t._v("docker username")]),t._v(" "),s("td",[t._v("my-docker-user")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker password")]),t._v(" "),s("td",[t._v("mypassword")]),t._v(" "),s("td")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(285),alt:"image-20190721111011798"}})]),t._v(" "),s("blockquote",[s("p",[t._v("当前 Kuboard 支持如下类型 Secrets 的创建:")]),t._v(" "),s("ul",[s("li",[t._v("docker仓库密码")]),t._v(" "),s("li",[t._v("当您的镜像存储在私有仓库时,您在创建工作负载时可能需要配置 imagePullSecrets 用来访问镜像仓库")]),t._v(" "),s("li",[t._v("Opaque")]),t._v(" "),s("li",[t._v("密码")]),t._v(" "),s("li",[t._v("TLS")]),t._v(" "),s("li",[t._v("当您为 Ingress 启用 HTTPS 时,您需要将域名的的 TLS 证书存入 Secrets")])])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击保存")]),t._v(" "),s("p",[t._v("Secrets 创建成功,如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(286),alt:"image-20190721111540512"}})]),t._v(" "),s("h1",{attrs:{id:"查看-编辑-删除-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 Secrets")]),t._v(" "),s("ul",[s("li",[t._v("点击 my-docker-repository")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(287),alt:"image-20190721111642221"}})]),t._v(" "),s("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{276:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110543437.8cbe188d.png"},277:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111011798.b9cc73b4.png"},278:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111540512.b0a58451.png"},279:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111642221.f9c06dc3.png"},28:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110355464.25f25dda.png"},340:function(t,e,r){"use strict";r.r(e);var s=r(0),v=Object(s.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" Secrets")]),t._v(" "),s("h1",{attrs:{id:"查看-secrets-列表"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-secrets-列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看 Secrets 列表")]),t._v(" "),s("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:r(28),alt:"image-20190721110355464"}})]),t._v(" "),s("p",[t._v("Secrets 列表位于图中左上角,点击 "),s("em",[s("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),s("blockquote",[s("p",[t._v("点击 "),s("strong",[t._v("Secrets")]),t._v(" 可以刷新该列表")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(276),alt:"image-20190721110543437"}})]),t._v(" "),s("h1",{attrs:{id:"创建-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建 Secrets")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("Secrets / 创建")])])]),t._v(" "),s("p",[t._v("填写表单如下:")])])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("my-docker-repository")]),t._v(" "),s("td",[t._v("Secrets的名称")])]),t._v(" "),s("tr",[s("td",[t._v("类型")]),t._v(" "),s("td",[t._v("docker仓库密码")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker server")]),t._v(" "),s("td",[t._v("https://my-docker-repository.com")]),t._v(" "),s("td",[t._v("请填写 docker 仓库的全路径")])]),t._v(" "),s("tr",[s("td",[t._v("docker username")]),t._v(" "),s("td",[t._v("my-docker-user")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker password")]),t._v(" "),s("td",[t._v("mypassword")]),t._v(" "),s("td")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(277),alt:"image-20190721111011798"}})]),t._v(" "),s("blockquote",[s("p",[t._v("当前 Kuboard 支持如下类型 Secrets 的创建:")]),t._v(" "),s("ul",[s("li",[t._v("docker仓库密码")]),t._v(" "),s("li",[t._v("当您的镜像存储在私有仓库时,您在创建工作负载时可能需要配置 imagePullSecrets 用来访问镜像仓库")]),t._v(" "),s("li",[t._v("Opaque")]),t._v(" "),s("li",[t._v("密码")]),t._v(" "),s("li",[t._v("TLS")]),t._v(" "),s("li",[t._v("当您为 Ingress 启用 HTTPS 时,您需要将域名的的 TLS 证书存入 Secrets")])])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击保存")]),t._v(" "),s("p",[t._v("Secrets 创建成功,如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(278),alt:"image-20190721111540512"}})]),t._v(" "),s("h1",{attrs:{id:"查看-编辑-删除-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 Secrets")]),t._v(" "),s("ul",[s("li",[t._v("点击 my-docker-repository")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(279),alt:"image-20190721111642221"}})]),t._v(" "),s("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/30.d71df75d.js b/docs/assets/js/30.0332a0c8.js similarity index 98% rename from docs/assets/js/30.d71df75d.js rename to docs/assets/js/30.0332a0c8.js index edef823..0d5e84f 100644 --- a/docs/assets/js/30.d71df75d.js +++ b/docs/assets/js/30.0332a0c8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{355:function(t,v,_){"use strict";_.r(v);var r=_(0),e=Object(r.a)({},function(){var t=this,v=t.$createElement,_=t._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"端口转发"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#端口转发","aria-hidden":"true"}},[t._v("#")]),t._v(" 端口转发")]),t._v(" "),_("p",[t._v("微服务环境中,各个服务都通过 TCP / UDP 端口的形式提供访问。按调用者所在位置、通信协议的形式来划分,大致有如下几种情况:")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("调用者所在位置")]),t._v(" "),_("th",[t._v("通信协议")]),t._v(" "),_("th",[t._v("临时性")]),t._v(" "),_("th",[t._v("常见场景")]),t._v(" "),_("th",[t._v("推荐配置方式")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("用户从互联网(亦可能是公司内网)"),_("br"),t._v("访问 web 页面,或者 restful 接口")]),t._v(" "),_("td",[t._v("Kubernetes Ingress"),_("br"),t._v("(可在Kuboard中直接配置***互联网入口*** )")])]),t._v(" "),_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("临时性")]),t._v(" "),_("td",[t._v("例如,开发者临时需要访问数据库端口、Redis端口等;")]),t._v(" "),_("td",[t._v("在客户端所在机器配置 kubectl,"),_("br"),t._v("并"),_("span",{staticStyle:{color:"#F56C6C"}},[t._v("通过 kubectl port-forwad 进行端口转发")])])]),t._v(" "),_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("暂不讨论")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("VPC内/集群外")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("通过接口网关为周边系统提供服务")]),t._v(" "),_("td",[t._v("Kubernetes Service NodePort"),_("br"),t._v("(可在Kuboard中直接配置***访问方式/VPC内访问*** )")])]),t._v(" "),_("tr",[_("td",[t._v("VPC内/集群外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("同上")]),t._v(" "),_("td",[t._v("同上")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("集群内")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[_("strong",[t._v("场景1")]),t._v(":Web层访问微服务网关"),_("br"),_("strong",[t._v("场景2")]),t._v(":微服务网关调用微服务,微服务之间的互相调用等。")]),t._v(" "),_("td",[_("strong",[t._v("场景1")]),t._v(":Kubernetes Service ClusterIP "),_("br"),t._v("(可在Kuboard中直接配置 "),_("em",[_("strong",[t._v("访问方式/集群内访问")])]),t._v(" )"),_("br"),_("strong",[t._v("场景2")]),t._v(":Spring Cloud中使用Eureka/Consul等服务发现"),_("br"),t._v("(Kuboard中 "),_("em",[_("strong",[t._v("访问方式/不配置")])]),t._v(" )")])]),t._v(" "),_("tr",[_("td",[t._v("集群内")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("微服务访问数据库、微服务访问Redis等")]),t._v(" "),_("td",[t._v("Kubernetes Service ClusterIP "),_("br"),t._v("(可在Kuboard中直接配置 "),_("em",[_("strong",[t._v("访问方式/集群内访问")])]),t._v(" )")])])])]),t._v(" "),_("h2",{attrs:{id:"feature-planned"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#feature-planned","aria-hidden":"true"}},[t._v("#")]),t._v(" Feature planned")]),t._v(" "),_("p",[t._v("在作者使用 Kuboard 的运维实践中,有如下两个场景不能脱离 kubeadm / kubectl 命令行:")]),t._v(" "),_("ul",[_("li",[t._v("初始化集群 / 向集群添加节点")]),t._v(" "),_("li",[t._v("开发者临时需要访问数据库端口、Redis端口时,通过 kubectl port-forward 进行端口转发")])]),t._v(" "),_("p",[t._v("Kuboard 计划实现类似 kubectl port-forward 的功能,提高问题诊断过程中的便利性。")])])},[],!1,null,null,null);v.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{356:function(t,v,_){"use strict";_.r(v);var r=_(0),e=Object(r.a)({},function(){var t=this,v=t.$createElement,_=t._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"端口转发"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#端口转发","aria-hidden":"true"}},[t._v("#")]),t._v(" 端口转发")]),t._v(" "),_("p",[t._v("微服务环境中,各个服务都通过 TCP / UDP 端口的形式提供访问。按调用者所在位置、通信协议的形式来划分,大致有如下几种情况:")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("调用者所在位置")]),t._v(" "),_("th",[t._v("通信协议")]),t._v(" "),_("th",[t._v("临时性")]),t._v(" "),_("th",[t._v("常见场景")]),t._v(" "),_("th",[t._v("推荐配置方式")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("用户从互联网(亦可能是公司内网)"),_("br"),t._v("访问 web 页面,或者 restful 接口")]),t._v(" "),_("td",[t._v("Kubernetes Ingress"),_("br"),t._v("(可在Kuboard中直接配置***互联网入口*** )")])]),t._v(" "),_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("临时性")]),t._v(" "),_("td",[t._v("例如,开发者临时需要访问数据库端口、Redis端口等;")]),t._v(" "),_("td",[t._v("在客户端所在机器配置 kubectl,"),_("br"),t._v("并"),_("span",{staticStyle:{color:"#F56C6C"}},[t._v("通过 kubectl port-forwad 进行端口转发")])])]),t._v(" "),_("tr",[_("td",[t._v("VPC外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("暂不讨论")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("VPC内/集群外")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("通过接口网关为周边系统提供服务")]),t._v(" "),_("td",[t._v("Kubernetes Service NodePort"),_("br"),t._v("(可在Kuboard中直接配置***访问方式/VPC内访问*** )")])]),t._v(" "),_("tr",[_("td",[t._v("VPC内/集群外")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("同上")]),t._v(" "),_("td",[t._v("同上")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("集群内")]),t._v(" "),_("td",[t._v("http / https")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[_("strong",[t._v("场景1")]),t._v(":Web层访问微服务网关"),_("br"),_("strong",[t._v("场景2")]),t._v(":微服务网关调用微服务,微服务之间的互相调用等。")]),t._v(" "),_("td",[_("strong",[t._v("场景1")]),t._v(":Kubernetes Service ClusterIP "),_("br"),t._v("(可在Kuboard中直接配置 "),_("em",[_("strong",[t._v("访问方式/集群内访问")])]),t._v(" )"),_("br"),_("strong",[t._v("场景2")]),t._v(":Spring Cloud中使用Eureka/Consul等服务发现"),_("br"),t._v("(Kuboard中 "),_("em",[_("strong",[t._v("访问方式/不配置")])]),t._v(" )")])]),t._v(" "),_("tr",[_("td",[t._v("集群内")]),t._v(" "),_("td",[t._v("tcp / udp")]),t._v(" "),_("td",[t._v("日常性")]),t._v(" "),_("td",[t._v("微服务访问数据库、微服务访问Redis等")]),t._v(" "),_("td",[t._v("Kubernetes Service ClusterIP "),_("br"),t._v("(可在Kuboard中直接配置 "),_("em",[_("strong",[t._v("访问方式/集群内访问")])]),t._v(" )")])])])]),t._v(" "),_("h2",{attrs:{id:"feature-planned"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#feature-planned","aria-hidden":"true"}},[t._v("#")]),t._v(" Feature planned")]),t._v(" "),_("p",[t._v("在作者使用 Kuboard 的运维实践中,有如下两个场景不能脱离 kubeadm / kubectl 命令行:")]),t._v(" "),_("ul",[_("li",[t._v("初始化集群 / 向集群添加节点")]),t._v(" "),_("li",[t._v("开发者临时需要访问数据库端口、Redis端口时,通过 kubectl port-forward 进行端口转发")])]),t._v(" "),_("p",[t._v("Kuboard 计划实现类似 kubectl port-forward 的功能,提高问题诊断过程中的便利性。")])])},[],!1,null,null,null);v.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/32.d1520518.js b/docs/assets/js/32.0af51253.js similarity index 92% rename from docs/assets/js/32.d1520518.js rename to docs/assets/js/32.0af51253.js index c43e9d6..229f447 100644 --- a/docs/assets/js/32.d1520518.js +++ b/docs/assets/js/32.0af51253.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{346:function(t,e,a){"use strict";a.r(e);var r=a(0),l=Object(r.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"自定义监控套件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义监控套件","aria-hidden":"true"}},[t._v("#")]),t._v(" 自定义监控套件")]),t._v(" "),a("p",[t._v("文档建设中...")]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("请参考 "),a("a",{attrs:{href:"/guide/example/monitor"}},[t._v("监控 example (alpha)")]),t._v(" 体验 Kuboard 在监控套件方面的设想")]),t._v(" "),a("li",[t._v("监控套件以插件的形式整合到 Kuboard,在不使用监控套件的情况下,Kuboard 的所有功能都可正常工作")])])])])},[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{328:function(t,e,a){"use strict";a.r(e);var r=a(0),l=Object(r.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"自定义监控套件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义监控套件","aria-hidden":"true"}},[t._v("#")]),t._v(" 自定义监控套件")]),t._v(" "),a("p",[t._v("文档建设中...")]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("请参考 "),a("a",{attrs:{href:"/guide/example/monitor"}},[t._v("监控 example (alpha)")]),t._v(" 体验 Kuboard 在监控套件方面的设想")]),t._v(" "),a("li",[t._v("监控套件以插件的形式整合到 Kuboard,在不使用监控套件的情况下,Kuboard 的所有功能都可正常工作")])])])])},[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/6.732ffd80.js b/docs/assets/js/6.8177f997.js similarity index 99% rename from docs/assets/js/6.732ffd80.js rename to docs/assets/js/6.8177f997.js index 7960627..2157618 100644 --- a/docs/assets/js/6.732ffd80.js +++ b/docs/assets/js/6.8177f997.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{250:function(t,e,s){t.exports=s.p+"assets/img/image-20190720232405147.8fc011f9.png"},251:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233322837.998be85a.png"},252:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233348284.2360801d.png"},253:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233412812.4f5ce20f.png"},254:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233436465.6d8cf61e.png"},255:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233512996.d7ba2b19.png"},256:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000526434.cfdf2d30.png"},257:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000759925.bb32a332.png"},258:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000822458.5797bca7.png"},259:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000847954.6f05e4b8.png"},260:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000919933.3a1d313e.png"},261:function(t,e,s){t.exports=s.p+"assets/img/image-20190721100715898.f0faa9aa.png"},345:function(t,e,s){"use strict";s.r(e);var a=s(0),v=Object(a.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"日常调整"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#日常调整","aria-hidden":"true"}},[t._v("#")]),t._v(" 日常调整")]),t._v(" "),a("h2",{attrs:{id:"前提"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),a("p",[t._v("必须具备如下条件:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Kubernetes 集群")])]),t._v(" "),a("li",[a("p",[t._v("已在集群中安装 Kuboard")])])]),t._v(" "),a("p",[t._v("假设您一进入 "),a("em",[a("strong",[t._v("example")])]),t._v(" 名称空间页面,如下图所示:")]),t._v(" "),a("p",[a("img",{attrs:{src:s(250),alt:"image-20190720232405147"}})]),t._v(" "),a("h2",{attrs:{id:"批量删除容器组"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量删除容器组","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量删除容器组")]),t._v(" "),a("p",[t._v("批量删除容器组特别适用于 "),a("strong",[t._v("开发测试环境的版本更新")]),t._v(" 场景,描述如下:")]),t._v(" "),a("ul",[a("li",[t._v("开发/测试环境中,开发人员提交代码")]),t._v(" "),a("li",[t._v("DevOps环境自动构建出 docker 镜像,并将 docker 镜像推送到仓库;\n"),a("ul",[a("li",[t._v("如果您的 devops 环境只在生成新的 branch 或者 tag 时,生成镜像的新 version,那么原镜像标签的实际镜像已发生改变。")])])]),t._v(" "),a("li",[t._v("从 Kubernetes 中删除该镜像的 容器组")]),t._v(" "),a("li",[t._v("Kubernetes 创建新的 容器组,并且该容器组重新从镜像仓库拉取最新的镜像")])]),t._v(" "),a("p",[t._v("在 Kuboard 中,"),a("em",[a("strong",[t._v("批量删除容器组")])]),t._v(" 的操作步骤为:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("在名称空间页面点击 "),a("em",[a("strong",[t._v("容器组列表")])])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("选择要筛选的应用分层,并点击刷新,")])]),t._v(" "),a("li",[a("p",[t._v("选择要删除的容器组")])])]),t._v(" "),a("p",[t._v("如下图所示:")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(251),alt:"image-20190720233322837"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("删除")])]),t._v(" 按钮")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(252),alt:"image-20190720233348284"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("确定")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(253),alt:"image-20190720233412812"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("应用")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(254),alt:"image-20190720233436465"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("点击 "),a("em",[a("strong",[t._v("完成")])])]),t._v(" "),a("p",[t._v("并等待,直到 kubernetes 完成对容器组的调整操作")]),t._v(" "),a("blockquote",[a("p",[t._v("Kuboard 会自动监听 kubernetes 执行此调整操作时的变化,您无需刷新页面,只要等待结果即可。")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(255),alt:"image-20190720233512996"}})]),t._v(" "),a("h2",{attrs:{id:"批量调整镜像版本"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量调整镜像版本","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量调整镜像版本")]),t._v(" "),a("p",[t._v("批量调整镜像版本适用于如下场景:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("需要更新容器所使用的镜像的版本号")]),t._v(" "),a("p",[t._v("通常是经过测试的版本,且 DevOps 环境在构建镜像时,为其生成了新的版本号")])])]),t._v(" "),a("p",[t._v("批量调整镜像版本的操作如下:")]),t._v(" "),a("ul",[a("li",[t._v("在名称空间页面点击 "),a("em",[a("strong",[t._v("调整镜像版本")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(256),alt:"image-20190721000526434"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("在要调整的镜像上点击 "),a("em",[a("strong",[t._v("修改")])])]),t._v(" "),a("p",[t._v("并填写新的镜像版本号,如下图所示:")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(257),alt:"image-20190721000759925"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("执行变更")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(258),alt:"image-20190721000822458"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("应用")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(259),alt:"image-20190721000847954"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("点击 "),a("em",[a("strong",[t._v("完成")])])]),t._v(" "),a("p",[t._v("此时会进入容器组列表界面,请等待 Kubernetes 完成对容器组的调整(无需刷新页面)")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(260),alt:"image-20190721000919933"}})]),t._v(" "),a("h2",{attrs:{id:"批量调整工作负载的副本数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量调整工作负载的副本数","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量调整工作负载的副本数")]),t._v(" "),a("p",[a("em",[a("strong",[t._v("调整容器镜像版本")])]),t._v(" 的功能界面中,也可以用来调整工作负载的副本数,如下图所示:")]),t._v(" "),a("p",[a("img",{attrs:{src:s(261),alt:"image-20190721100715898"}})])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{250:function(t,e,s){t.exports=s.p+"assets/img/image-20190720232405147.8fc011f9.png"},251:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233322837.998be85a.png"},252:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233348284.2360801d.png"},253:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233412812.4f5ce20f.png"},254:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233436465.6d8cf61e.png"},255:function(t,e,s){t.exports=s.p+"assets/img/image-20190720233512996.d7ba2b19.png"},256:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000526434.cfdf2d30.png"},257:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000759925.bb32a332.png"},258:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000822458.5797bca7.png"},259:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000847954.6f05e4b8.png"},260:function(t,e,s){t.exports=s.p+"assets/img/image-20190721000919933.3a1d313e.png"},261:function(t,e,s){t.exports=s.p+"assets/img/image-20190721100715898.f0faa9aa.png"},346:function(t,e,s){"use strict";s.r(e);var a=s(0),v=Object(a.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"日常调整"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#日常调整","aria-hidden":"true"}},[t._v("#")]),t._v(" 日常调整")]),t._v(" "),a("h2",{attrs:{id:"前提"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),a("p",[t._v("必须具备如下条件:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Kubernetes 集群")])]),t._v(" "),a("li",[a("p",[t._v("已在集群中安装 Kuboard")])])]),t._v(" "),a("p",[t._v("假设您一进入 "),a("em",[a("strong",[t._v("example")])]),t._v(" 名称空间页面,如下图所示:")]),t._v(" "),a("p",[a("img",{attrs:{src:s(250),alt:"image-20190720232405147"}})]),t._v(" "),a("h2",{attrs:{id:"批量删除容器组"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量删除容器组","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量删除容器组")]),t._v(" "),a("p",[t._v("批量删除容器组特别适用于 "),a("strong",[t._v("开发测试环境的版本更新")]),t._v(" 场景,描述如下:")]),t._v(" "),a("ul",[a("li",[t._v("开发/测试环境中,开发人员提交代码")]),t._v(" "),a("li",[t._v("DevOps环境自动构建出 docker 镜像,并将 docker 镜像推送到仓库;\n"),a("ul",[a("li",[t._v("如果您的 devops 环境只在生成新的 branch 或者 tag 时,生成镜像的新 version,那么原镜像标签的实际镜像已发生改变。")])])]),t._v(" "),a("li",[t._v("从 Kubernetes 中删除该镜像的 容器组")]),t._v(" "),a("li",[t._v("Kubernetes 创建新的 容器组,并且该容器组重新从镜像仓库拉取最新的镜像")])]),t._v(" "),a("p",[t._v("在 Kuboard 中,"),a("em",[a("strong",[t._v("批量删除容器组")])]),t._v(" 的操作步骤为:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("在名称空间页面点击 "),a("em",[a("strong",[t._v("容器组列表")])])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("选择要筛选的应用分层,并点击刷新,")])]),t._v(" "),a("li",[a("p",[t._v("选择要删除的容器组")])])]),t._v(" "),a("p",[t._v("如下图所示:")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(251),alt:"image-20190720233322837"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("删除")])]),t._v(" 按钮")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(252),alt:"image-20190720233348284"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("确定")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(253),alt:"image-20190720233412812"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("应用")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(254),alt:"image-20190720233436465"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("点击 "),a("em",[a("strong",[t._v("完成")])])]),t._v(" "),a("p",[t._v("并等待,直到 kubernetes 完成对容器组的调整操作")]),t._v(" "),a("blockquote",[a("p",[t._v("Kuboard 会自动监听 kubernetes 执行此调整操作时的变化,您无需刷新页面,只要等待结果即可。")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(255),alt:"image-20190720233512996"}})]),t._v(" "),a("h2",{attrs:{id:"批量调整镜像版本"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量调整镜像版本","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量调整镜像版本")]),t._v(" "),a("p",[t._v("批量调整镜像版本适用于如下场景:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("需要更新容器所使用的镜像的版本号")]),t._v(" "),a("p",[t._v("通常是经过测试的版本,且 DevOps 环境在构建镜像时,为其生成了新的版本号")])])]),t._v(" "),a("p",[t._v("批量调整镜像版本的操作如下:")]),t._v(" "),a("ul",[a("li",[t._v("在名称空间页面点击 "),a("em",[a("strong",[t._v("调整镜像版本")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(256),alt:"image-20190721000526434"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("在要调整的镜像上点击 "),a("em",[a("strong",[t._v("修改")])])]),t._v(" "),a("p",[t._v("并填写新的镜像版本号,如下图所示:")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(257),alt:"image-20190721000759925"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("执行变更")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(258),alt:"image-20190721000822458"}})]),t._v(" "),a("ul",[a("li",[t._v("点击 "),a("em",[a("strong",[t._v("应用")])])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(259),alt:"image-20190721000847954"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("点击 "),a("em",[a("strong",[t._v("完成")])])]),t._v(" "),a("p",[t._v("此时会进入容器组列表界面,请等待 Kubernetes 完成对容器组的调整(无需刷新页面)")])])]),t._v(" "),a("p",[a("img",{attrs:{src:s(260),alt:"image-20190721000919933"}})]),t._v(" "),a("h2",{attrs:{id:"批量调整工作负载的副本数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#批量调整工作负载的副本数","aria-hidden":"true"}},[t._v("#")]),t._v(" 批量调整工作负载的副本数")]),t._v(" "),a("p",[a("em",[a("strong",[t._v("调整容器镜像版本")])]),t._v(" 的功能界面中,也可以用来调整工作负载的副本数,如下图所示:")]),t._v(" "),a("p",[a("img",{attrs:{src:s(261),alt:"image-20190721100715898"}})])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/8.ccc2677d.js b/docs/assets/js/8.da529a9f.js similarity index 99% rename from docs/assets/js/8.ccc2677d.js rename to docs/assets/js/8.da529a9f.js index edd0533..8134930 100644 --- a/docs/assets/js/8.ccc2677d.js +++ b/docs/assets/js/8.da529a9f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{219:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115852719.f1658660.png"},220:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115912645.393d67ff.png"},221:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115940862.dfeacc57.png"},222:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120011972.0f0914c5.png"},223:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120050894.9b1d6350.png"},224:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120104474.617a620a.png"},225:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120125425.a46d7874.png"},356:function(t,_,v){"use strict";v.r(_);var e=v(0),s=Object(e.a)({},function(){var t=this,_=t.$createElement,e=t._self._c||_;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"部署-busybox"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署-busybox","aria-hidden":"true"}},[t._v("#")]),t._v(" 部署 busybox")]),t._v(" "),e("h2",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),e("p",[t._v("必须具备如下条件:")]),t._v(" "),e("ul",[e("li",[t._v("Kubernetes 集群")]),t._v(" "),e("li",[t._v("已在集群中安装 Kuboard")])]),t._v(" "),e("p",[t._v("假设您已经进入了 Kuboard 名称空间界面,如下图所示。可参考 "),e("router-link",{attrs:{to:"/guide/cluster/namespace.html#创建名称空间"}},[t._v("创建名称空间")])],1),t._v(" "),e("p",[e("img",{attrs:{src:v(73),alt:"image-20190723115721514"}})]),t._v(" "),e("h2",{attrs:{id:"部署-busybox-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署-busybox-2","aria-hidden":"true"}},[t._v("#")]),t._v(" 部署 busybox")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://hub.docker.com/_/busybox",target:"_blank",rel:"noopener noreferrer"}},[t._v("查看 busybox 介绍"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如何将一个 docker image 通过 Kuboard 部署到 kubernetes 集群中。")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击 "),e("em",[e("strong",[t._v("创建工作负载按钮")])])]),t._v(" "),e("p",[t._v("填写表单如下:")])])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("字段名称")]),t._v(" "),e("th",[t._v("填写内容")]),t._v(" "),e("th",[t._v("说明")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("服务类型")]),t._v(" "),e("td",[t._v("Deployment")]),t._v(" "),e("td",[t._v("Kubernetes 的 Deployment 类型")])]),t._v(" "),e("tr",[e("td",[t._v("服务分层")]),t._v(" "),e("td",[t._v("中间件")]),t._v(" "),e("td",[t._v("生成的Kuberenetes对象以 cloud- 作为前缀,"),e("br"),t._v("并显示在中间件分层中")])]),t._v(" "),e("tr",[e("td",[t._v("服务名称")]),t._v(" "),e("td",[t._v("busybox")]),t._v(" "),e("td",[t._v("显示在 Kuboard 中的名称")])]),t._v(" "),e("tr",[e("td",[t._v("副本数量")]),t._v(" "),e("td",[t._v("1")]),t._v(" "),e("td",[t._v("replicas")])]),t._v(" "),e("tr",[e("td",[t._v("容器名称")]),t._v(" "),e("td",[t._v("busybox")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("镜像")]),t._v(" "),e("td",[t._v("busybox:1.29")]),t._v(" "),e("td",[t._v("hub.docker.com 中的 busybox 镜像")])]),t._v(" "),e("tr",[e("td",[t._v("Command")]),t._v(" "),e("td",[t._v("sleep")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("Command")]),t._v(" "),e("td",[t._v("3600")]),t._v(" "),e("td")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(219),alt:"image-20190723115852719"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("完成表单填写后,点击***保存***")]),t._v(" "),e("p",[t._v("Kuboard 将对表单参数进行校验,通过后,方可执行对集群的变更操作。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(220),alt:"image-20190723115912645"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***应用***")]),t._v(" "),e("p",[t._v("Kuboard 执行对集群的变更操作,变更的过程中,产生的事件以通知消息的形式显示出来。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(221),alt:"image-20190723115940862"}})]),t._v(" "),e("h2",{attrs:{id:"验证工作负载"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#验证工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 验证工作负载")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***完成***")]),t._v(" "),e("p",[t._v("点击完成后,可查看工作负载的信息。该界面分成四个区域:")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("页头区")]),t._v(" "),e("p",[t._v("页头区包含对该工作负载(本案例中为 Deployment)的操作按钮。可执行的操作有:"),e("em",[e("strong",[t._v("编辑")])]),t._v(" / "),e("em",[e("strong",[t._v("伸缩")])]),t._v(" / "),e("em",[e("strong",[t._v("刷新")])]),t._v(" / "),e("em",[e("strong",[t._v("删除")])])])]),t._v(" "),e("li",[e("p",[t._v("工作负载基本信息")]),t._v(" "),e("p",[t._v("基本信息区显示了工作负载的 "),e("em",[e("strong",[t._v("基本信息")])]),t._v(" 、"),e("em",[e("strong",[t._v("运行时信息")])]),t._v("、"),e("em",[e("strong",[t._v("访问方式")])]),t._v("(Service)、"),e("em",[e("strong",[t._v("互联网入口")])]),t._v("(Ingress)")])]),t._v(" "),e("li",[e("p",[t._v("容器组列表")]),t._v(" "),e("p",[t._v("容器组列表区显示了该当前对应的所有容器组(Pod),容器组列表区监听集群的动态变化,当您执行伸缩操作、或者删除容器组操作时,无需刷新,就可以查看到最新的容器组信息。")])]),t._v(" "),e("li",[e("p",[t._v("容器组详情")]),t._v(" "),e("p",[t._v("容器组详情区显示了当前选中容器组的信息,其中包括:")]),t._v(" "),e("ul",[e("li",[t._v("容器组相关事件")]),t._v(" "),e("li",[t._v("容器组基本信息,及删除容器组的操作按钮。(此区域还包括容器组相关的监控操作,监控模块在后续的章节中介绍)")]),t._v(" "),e("li",[t._v("容器基本信息,及查看容器日志、打开容器终端的按钮。(此区域还包括容器相关的监控操作,监控模块在后续的章节中介绍)")])])])])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(222),alt:"image-20190723120011972"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***终端***")]),t._v(" "),e("p",[t._v("此时打开了该容器的控制台,Kuboard 默认使用 /bin/bash 终端程序,而 busybox 镜像中并不包含 /bin/bash,因此您会看到一个如下图所示的错误提示:")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(223),alt:"image-20190723120050894"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***切换到 /bin/sh***")]),t._v(" "),e("p",[t._v("点击屏幕左上角的 "),e("em",[e("strong",[t._v("切换到 /bin/sh")])])])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(224),alt:"image-20190723120104474"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("输入 "),e("em",[t._v("export")]),t._v(" 并回车")]),t._v(" "),e("p",[t._v("输入 "),e("em",[t._v("export")]),t._v(" 并回车后,可查看该容器当前的环境变量。您也可以在终端中执行任何容器内部的命令。在您完成容器的部署之后,终端界面是非常有效的问题诊断工具之一。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(225),alt:"image-20190723120125425"}})])])},[],!1,null,null,null);_.default=s.exports},73:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115721514.bf981ef3.png"}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{219:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115852719.f1658660.png"},220:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115912645.393d67ff.png"},221:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115940862.dfeacc57.png"},222:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120011972.0f0914c5.png"},223:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120050894.9b1d6350.png"},224:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120104474.617a620a.png"},225:function(t,_,v){t.exports=v.p+"assets/img/image-20190723120125425.a46d7874.png"},355:function(t,_,v){"use strict";v.r(_);var e=v(0),s=Object(e.a)({},function(){var t=this,_=t.$createElement,e=t._self._c||_;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"部署-busybox"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署-busybox","aria-hidden":"true"}},[t._v("#")]),t._v(" 部署 busybox")]),t._v(" "),e("h2",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),e("p",[t._v("必须具备如下条件:")]),t._v(" "),e("ul",[e("li",[t._v("Kubernetes 集群")]),t._v(" "),e("li",[t._v("已在集群中安装 Kuboard")])]),t._v(" "),e("p",[t._v("假设您已经进入了 Kuboard 名称空间界面,如下图所示。可参考 "),e("router-link",{attrs:{to:"/guide/cluster/namespace.html#创建名称空间"}},[t._v("创建名称空间")])],1),t._v(" "),e("p",[e("img",{attrs:{src:v(73),alt:"image-20190723115721514"}})]),t._v(" "),e("h2",{attrs:{id:"部署-busybox-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署-busybox-2","aria-hidden":"true"}},[t._v("#")]),t._v(" 部署 busybox")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://hub.docker.com/_/busybox",target:"_blank",rel:"noopener noreferrer"}},[t._v("查看 busybox 介绍"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如何将一个 docker image 通过 Kuboard 部署到 kubernetes 集群中。")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击 "),e("em",[e("strong",[t._v("创建工作负载按钮")])])]),t._v(" "),e("p",[t._v("填写表单如下:")])])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("字段名称")]),t._v(" "),e("th",[t._v("填写内容")]),t._v(" "),e("th",[t._v("说明")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("服务类型")]),t._v(" "),e("td",[t._v("Deployment")]),t._v(" "),e("td",[t._v("Kubernetes 的 Deployment 类型")])]),t._v(" "),e("tr",[e("td",[t._v("服务分层")]),t._v(" "),e("td",[t._v("中间件")]),t._v(" "),e("td",[t._v("生成的Kuberenetes对象以 cloud- 作为前缀,"),e("br"),t._v("并显示在中间件分层中")])]),t._v(" "),e("tr",[e("td",[t._v("服务名称")]),t._v(" "),e("td",[t._v("busybox")]),t._v(" "),e("td",[t._v("显示在 Kuboard 中的名称")])]),t._v(" "),e("tr",[e("td",[t._v("副本数量")]),t._v(" "),e("td",[t._v("1")]),t._v(" "),e("td",[t._v("replicas")])]),t._v(" "),e("tr",[e("td",[t._v("容器名称")]),t._v(" "),e("td",[t._v("busybox")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("镜像")]),t._v(" "),e("td",[t._v("busybox:1.29")]),t._v(" "),e("td",[t._v("hub.docker.com 中的 busybox 镜像")])]),t._v(" "),e("tr",[e("td",[t._v("Command")]),t._v(" "),e("td",[t._v("sleep")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("Command")]),t._v(" "),e("td",[t._v("3600")]),t._v(" "),e("td")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(219),alt:"image-20190723115852719"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("完成表单填写后,点击***保存***")]),t._v(" "),e("p",[t._v("Kuboard 将对表单参数进行校验,通过后,方可执行对集群的变更操作。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(220),alt:"image-20190723115912645"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***应用***")]),t._v(" "),e("p",[t._v("Kuboard 执行对集群的变更操作,变更的过程中,产生的事件以通知消息的形式显示出来。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(221),alt:"image-20190723115940862"}})]),t._v(" "),e("h2",{attrs:{id:"验证工作负载"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#验证工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 验证工作负载")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***完成***")]),t._v(" "),e("p",[t._v("点击完成后,可查看工作负载的信息。该界面分成四个区域:")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("页头区")]),t._v(" "),e("p",[t._v("页头区包含对该工作负载(本案例中为 Deployment)的操作按钮。可执行的操作有:"),e("em",[e("strong",[t._v("编辑")])]),t._v(" / "),e("em",[e("strong",[t._v("伸缩")])]),t._v(" / "),e("em",[e("strong",[t._v("刷新")])]),t._v(" / "),e("em",[e("strong",[t._v("删除")])])])]),t._v(" "),e("li",[e("p",[t._v("工作负载基本信息")]),t._v(" "),e("p",[t._v("基本信息区显示了工作负载的 "),e("em",[e("strong",[t._v("基本信息")])]),t._v(" 、"),e("em",[e("strong",[t._v("运行时信息")])]),t._v("、"),e("em",[e("strong",[t._v("访问方式")])]),t._v("(Service)、"),e("em",[e("strong",[t._v("互联网入口")])]),t._v("(Ingress)")])]),t._v(" "),e("li",[e("p",[t._v("容器组列表")]),t._v(" "),e("p",[t._v("容器组列表区显示了该当前对应的所有容器组(Pod),容器组列表区监听集群的动态变化,当您执行伸缩操作、或者删除容器组操作时,无需刷新,就可以查看到最新的容器组信息。")])]),t._v(" "),e("li",[e("p",[t._v("容器组详情")]),t._v(" "),e("p",[t._v("容器组详情区显示了当前选中容器组的信息,其中包括:")]),t._v(" "),e("ul",[e("li",[t._v("容器组相关事件")]),t._v(" "),e("li",[t._v("容器组基本信息,及删除容器组的操作按钮。(此区域还包括容器组相关的监控操作,监控模块在后续的章节中介绍)")]),t._v(" "),e("li",[t._v("容器基本信息,及查看容器日志、打开容器终端的按钮。(此区域还包括容器相关的监控操作,监控模块在后续的章节中介绍)")])])])])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(222),alt:"image-20190723120011972"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***终端***")]),t._v(" "),e("p",[t._v("此时打开了该容器的控制台,Kuboard 默认使用 /bin/bash 终端程序,而 busybox 镜像中并不包含 /bin/bash,因此您会看到一个如下图所示的错误提示:")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(223),alt:"image-20190723120050894"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("点击***切换到 /bin/sh***")]),t._v(" "),e("p",[t._v("点击屏幕左上角的 "),e("em",[e("strong",[t._v("切换到 /bin/sh")])])])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(224),alt:"image-20190723120104474"}})]),t._v(" "),e("ul",[e("li",[e("p",[t._v("输入 "),e("em",[t._v("export")]),t._v(" 并回车")]),t._v(" "),e("p",[t._v("输入 "),e("em",[t._v("export")]),t._v(" 并回车后,可查看该容器当前的环境变量。您也可以在终端中执行任何容器内部的命令。在您完成容器的部署之后,终端界面是非常有效的问题诊断工具之一。")])])]),t._v(" "),e("p",[e("img",{attrs:{src:v(225),alt:"image-20190723120125425"}})])])},[],!1,null,null,null);_.default=s.exports},73:function(t,_,v){t.exports=v.p+"assets/img/image-20190723115721514.bf981ef3.png"}}]); \ No newline at end of file diff --git a/docs/assets/js/9.7f90671a.js b/docs/assets/js/9.43663f9d.js similarity index 85% rename from docs/assets/js/9.7f90671a.js rename to docs/assets/js/9.43663f9d.js index fc45be2..49c9f88 100644 --- a/docs/assets/js/9.7f90671a.js +++ b/docs/assets/js/9.43663f9d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{276:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223454676.b545b43f.png"},277:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223551308.ed106a2a.png"},278:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223605920.3e762b29.png"},279:function(t,e,a){t.exports=a.p+"assets/img/image-20190722231246540.ebf13194.png"},280:function(t,e,a){t.exports=a.p+"assets/img/image-20190722224029397.abc44209.png"},281:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225347491.984fabae.png"},282:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225454029.73400267.png"},283:function(t,e,a){t.exports=a.p+"assets/img/image-20190722230511430.ed459354.png"},340:function(t,e,a){"use strict";a.r(e);var r=a(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 工作负载")]),t._v(" "),r("h2",{attrs:{id:"创建-查看-编辑工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#创建-查看-编辑工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建/查看/编辑工作负载")]),t._v(" "),r("p",[t._v("请参考 "),r("a",{attrs:{href:"/guide/example/busybox"}},[t._v("创建 busybox")])]),t._v(" "),r("h2",{attrs:{id:"伸缩"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#伸缩","aria-hidden":"true"}},[t._v("#")]),t._v(" 伸缩")]),t._v(" "),r("p",[t._v("伸缩操作,通过调整工作负载的 replicas 大小,来控制该工作负载运行容器组的数量。")]),t._v(" "),r("ul",[r("li",[t._v("假设您已进入工作负载查看界面,如下图所示:")])]),t._v(" "),r("p",[r("img",{attrs:{src:a(276),alt:"image-20190722223454676"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("伸缩")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("填写表单")]),t._v(" "),r("p",[t._v("副本数: 目标容器组数量")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(277),alt:"image-20190722223551308"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("确定")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("等待,知道伸缩操作执行完毕。")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(278),alt:"image-20190722223605920"}})]),t._v(" "),r("h2",{attrs:{id:"删除容器组"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#删除容器组","aria-hidden":"true"}},[t._v("#")]),t._v(" 删除容器组")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("删除容器组")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可删除该容器组。")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("容器组被删除之后,Kubernetes Workload Controller 将要重新创建一个容器组,用于替代被删除的容器组;被删除容器组原有的状态将丢失,新容器组重新从 镜像中加载启动;")])]),t._v(" "),r("li",[r("p",[t._v("Kuboard 的工作负载编辑器,默认将容器组的 imagePullPolicy 设置为 Alwarys,因此,每次在容器组启动的时候,Kubenetes 都会尝试从镜像仓库中抓取最新镜像;")])])])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(279),alt:"image-20190722231246540"}})]),t._v(" "),r("h2",{attrs:{id:"诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 诊断问题")]),t._v(" "),r("p",[t._v("在诊断工作负载的问题时,Kuboard主要提供三种手段:")]),t._v(" "),r("h3",{attrs:{id:"事件:-kubernetes-部署相关问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#事件:-kubernetes-部署相关问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 事件: Kubernetes 部署相关问题")]),t._v(" "),r("p",[t._v("如下图所示,图中提示")]),t._v(" "),r("blockquote",[r("p",[t._v("错误内容:Error: ErrImagePull 该容器组抓取镜像失败")]),t._v(" "),r("p",[t._v("失败原因:pull access denied for busy-box, repository does not exist or may require 'docker login'")])]),t._v(" "),r("p",[t._v("对于这样的错误,需要技术人员检查:")]),t._v(" "),r("ul",[r("li",[t._v("容器所在节点与镜像仓库之间的网络连通性")]),t._v(" "),r("li",[t._v("容器镜像拼写是否正确")]),t._v(" "),r("li",[t._v("如果为私有仓库,是否在工作负载编辑器中正确配置了 docker 仓库用户名密码")])]),t._v(" "),r("p",[t._v("!> Kuboard 监听了 Kubernetes 集群的事件变化,您无需刷新页面,即可在工作负载编辑器的容器组界面区域看到该容器相关的最新事件。")]),t._v(" "),r("p",[t._v("通过 Kubernetes 事件所指示出来的问题,通常是集群本身配置的问题,或者是创建工作负载时的参数填写问题,解决这样的问题需要的是 Kubernetes 集群相关的知识和背景,"),r("strong",[t._v("通常运维人员可以独立解决此类问题")]),t._v("。")]),t._v(" "),r("p",[r("img",{attrs:{src:a(280),alt:"image-20190722224029397"}})]),t._v(" "),r("h3",{attrs:{id:"日志:-容器运行时产生的错误"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#日志:-容器运行时产生的错误","aria-hidden":"true"}},[t._v("#")]),t._v(" 日志: 容器运行时产生的错误")]),t._v(" "),r("p",[t._v("如下图所示,假设您已进入工作负载查看界面:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(281),alt:"image-20190722225347491"}})]),t._v(" "),r("ul",[r("li",[t._v("点击其中的 "),r("em",[r("strong",[t._v("日志")])]),t._v(" 按钮")])]),t._v(" "),r("p",[t._v("可查看该容器的运行时日志,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(282),alt:"image-20190722225454029"}})]),t._v(" "),r("p",[r("strong",[t._v("容器运行时问题定位及解决")])]),t._v(" "),r("p",[t._v("日志所指示出来的错误,可能有两类原因:")]),t._v(" "),r("ul",[r("li",[t._v("将其容器部署到 Kubernetes 时,参数配置填写错误")]),t._v(" "),r("li",[t._v("容器内应用程序自身的 BUG")])]),t._v(" "),r("p",[t._v("无论是上述何种原因,运维人员如果请开发人员介入,一起排查这里问题,效果会好很多。")]),t._v(" "),r("h3",{attrs:{id:"终端:-通过交互式命令,在容器内诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#终端:-通过交互式命令,在容器内诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 终端: 通过交互式命令,在容器内诊断问题")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("终端")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可进入该容器的交互式命令界面")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(283),alt:"image-20190722230511430"}})]),t._v(" "),r("p",[r("strong",[t._v("适用场景")])]),t._v(" "),r("p",[t._v("在交互式终端里,"),r("strong",[t._v("运维人员")]),t._v("可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ping / curl 等命令,测试网络连通性,测试 Kubernetes 的服务 DNS 解析是否正确")]),t._v(" "),r("li",[t._v("通过 export 命令检查该容器的环境变量的设置是否正确")])]),t._v(" "),r("p",[r("strong",[t._v("开发人员")]),t._v(" 可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ls / cat / vi 等命令,查看该容器是否包含了最新的代码变更")]),t._v(" "),r("li",[t._v("通过 vi 等命令,临时对容器中的配置文件进行修改,并在验证这种修改有效之后,才将其正式更新到代码库")])])])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{280:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223454676.b545b43f.png"},281:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223551308.ed106a2a.png"},282:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223605920.3e762b29.png"},283:function(t,e,a){t.exports=a.p+"assets/img/image-20190722231246540.ebf13194.png"},284:function(t,e,a){t.exports=a.p+"assets/img/image-20190722224029397.abc44209.png"},285:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225347491.984fabae.png"},286:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225454029.73400267.png"},287:function(t,e,a){t.exports=a.p+"assets/img/image-20190722230511430.ed459354.png"},339:function(t,e,a){"use strict";a.r(e);var r=a(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 工作负载")]),t._v(" "),r("h2",{attrs:{id:"创建-查看-编辑工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#创建-查看-编辑工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建/查看/编辑工作负载")]),t._v(" "),r("p",[t._v("请参考 "),r("a",{attrs:{href:"/guide/example/busybox"}},[t._v("创建 busybox")])]),t._v(" "),r("h2",{attrs:{id:"伸缩"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#伸缩","aria-hidden":"true"}},[t._v("#")]),t._v(" 伸缩")]),t._v(" "),r("p",[t._v("伸缩操作,通过调整工作负载的 replicas 大小,来控制该工作负载运行容器组的数量。")]),t._v(" "),r("ul",[r("li",[t._v("假设您已进入工作负载查看界面,如下图所示:")])]),t._v(" "),r("p",[r("img",{attrs:{src:a(280),alt:"image-20190722223454676"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("伸缩")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("填写表单")]),t._v(" "),r("p",[t._v("副本数: 目标容器组数量")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(281),alt:"image-20190722223551308"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("确定")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("等待,知道伸缩操作执行完毕。")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(282),alt:"image-20190722223605920"}})]),t._v(" "),r("h2",{attrs:{id:"删除容器组"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#删除容器组","aria-hidden":"true"}},[t._v("#")]),t._v(" 删除容器组")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("删除容器组")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可删除该容器组。")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("容器组被删除之后,Kubernetes Workload Controller 将要重新创建一个容器组,用于替代被删除的容器组;被删除容器组原有的状态将丢失,新容器组重新从 镜像中加载启动;")])]),t._v(" "),r("li",[r("p",[t._v("Kuboard 的工作负载编辑器,默认将容器组的 imagePullPolicy 设置为 Alwarys,因此,每次在容器组启动的时候,Kubenetes 都会尝试从镜像仓库中抓取最新镜像;")])])])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(283),alt:"image-20190722231246540"}})]),t._v(" "),r("h2",{attrs:{id:"诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 诊断问题")]),t._v(" "),r("p",[t._v("在诊断工作负载的问题时,Kuboard主要提供三种手段:")]),t._v(" "),r("h3",{attrs:{id:"事件:-kubernetes-部署相关问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#事件:-kubernetes-部署相关问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 事件: Kubernetes 部署相关问题")]),t._v(" "),r("p",[t._v("如下图所示,图中提示")]),t._v(" "),r("blockquote",[r("p",[t._v("错误内容:Error: ErrImagePull 该容器组抓取镜像失败")]),t._v(" "),r("p",[t._v("失败原因:pull access denied for busy-box, repository does not exist or may require 'docker login'")])]),t._v(" "),r("p",[t._v("对于这样的错误,需要技术人员检查:")]),t._v(" "),r("ul",[r("li",[t._v("容器所在节点与镜像仓库之间的网络连通性")]),t._v(" "),r("li",[t._v("容器镜像拼写是否正确")]),t._v(" "),r("li",[t._v("如果为私有仓库,是否在工作负载编辑器中正确配置了 docker 仓库用户名密码")])]),t._v(" "),r("p",[t._v("!> Kuboard 监听了 Kubernetes 集群的事件变化,您无需刷新页面,即可在工作负载编辑器的容器组界面区域看到该容器相关的最新事件。")]),t._v(" "),r("p",[t._v("通过 Kubernetes 事件所指示出来的问题,通常是集群本身配置的问题,或者是创建工作负载时的参数填写问题,解决这样的问题需要的是 Kubernetes 集群相关的知识和背景,"),r("strong",[t._v("通常运维人员可以独立解决此类问题")]),t._v("。")]),t._v(" "),r("p",[r("img",{attrs:{src:a(284),alt:"image-20190722224029397"}})]),t._v(" "),r("h3",{attrs:{id:"日志:-容器运行时产生的错误"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#日志:-容器运行时产生的错误","aria-hidden":"true"}},[t._v("#")]),t._v(" 日志: 容器运行时产生的错误")]),t._v(" "),r("p",[t._v("如下图所示,假设您已进入工作负载查看界面:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(285),alt:"image-20190722225347491"}})]),t._v(" "),r("ul",[r("li",[t._v("点击其中的 "),r("em",[r("strong",[t._v("日志")])]),t._v(" 按钮")])]),t._v(" "),r("p",[t._v("可查看该容器的运行时日志,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(286),alt:"image-20190722225454029"}})]),t._v(" "),r("p",[r("strong",[t._v("容器运行时问题定位及解决")])]),t._v(" "),r("p",[t._v("日志所指示出来的错误,可能有两类原因:")]),t._v(" "),r("ul",[r("li",[t._v("将其容器部署到 Kubernetes 时,参数配置填写错误")]),t._v(" "),r("li",[t._v("容器内应用程序自身的 BUG")])]),t._v(" "),r("p",[t._v("无论是上述何种原因,运维人员如果请开发人员介入,一起排查这里问题,效果会好很多。")]),t._v(" "),r("h3",{attrs:{id:"终端:-通过交互式命令,在容器内诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#终端:-通过交互式命令,在容器内诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 终端: 通过交互式命令,在容器内诊断问题")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("终端")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可进入该容器的交互式命令界面")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(287),alt:"image-20190722230511430"}})]),t._v(" "),r("p",[r("strong",[t._v("适用场景")])]),t._v(" "),r("p",[t._v("在交互式终端里,"),r("strong",[t._v("运维人员")]),t._v("可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ping / curl 等命令,测试网络连通性,测试 Kubernetes 的服务 DNS 解析是否正确")]),t._v(" "),r("li",[t._v("通过 export 命令检查该容器的环境变量的设置是否正确")])]),t._v(" "),r("p",[r("strong",[t._v("开发人员")]),t._v(" 可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ls / cat / vi 等命令,查看该容器是否包含了最新的代码变更")]),t._v(" "),r("li",[t._v("通过 vi 等命令,临时对容器中的配置文件进行修改,并在验证这种修改有效之后,才将其正式更新到代码库")])])])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/app.1817bcf6.js b/docs/assets/js/app.2f90b6e5.js similarity index 96% rename from docs/assets/js/app.1817bcf6.js rename to docs/assets/js/app.2f90b6e5.js index ec509fc..0817a30 100644 --- a/docs/assets/js/app.1817bcf6.js +++ b/docs/assets/js/app.2f90b6e5.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],u=t[2],f=0,p=[];f
'};function o(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var l=n.render(!t),u=l.querySelector(r.barSelector),c=r.speed,f=r.easing;return l.offsetWidth,a(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,function(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}(e,c,f)),1===e?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout(function(){s(l,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0==--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),l=e?"-100":i(n.status||0),c=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){c(document.documentElement,"nprogress-busy"),c(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()}),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,o,i=arguments;if(2==i.length)for(n in t)void 0!==(o=t[n])&&t.hasOwnProperty(n)&&r(e,n,o);else r(e,i[1],i[2])}}();function l(e,t){var n="string"==typeof e?e:f(e);return n.indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function c(e,t){var n,r=f(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},function(e,t){var n="Expected a function",r=NaN,o="[object Symbol]",i=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,c="object"==typeof global&&global&&global.Object===Object&&global,f="object"==typeof self&&self&&self.Object===Object&&self,p=c||f||Function("return this")(),d=Object.prototype.toString,h=Math.max,v=Math.min,m=function(){return p.Date.now()};function g(e,t,r){var o,i,a,s,l,u,c=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new TypeError(n);function g(t){var n=o,r=i;return o=i=void 0,c=t,s=e.apply(r,n)}function _(e){var n=e-u;return void 0===u||n>=t||n<0||p&&e-c>=a}function w(){var e=m();if(_(e))return k(e);l=setTimeout(w,function(e){var n=t-(e-u);return p?v(n,a-(e-c)):n}(e))}function k(e){return l=void 0,d&&o?g(e):(o=i=void 0,s)}function x(){var e=m(),n=_(e);if(o=arguments,i=this,u=e,n){if(void 0===l)return function(e){return c=e,l=setTimeout(w,t),f?g(e):s}(u);if(p)return l=setTimeout(w,t),g(u)}return void 0===l&&(l=setTimeout(w,t)),s}return t=b(t)||0,y(r)&&(f=!!r.leading,a=(p="maxWait"in r)?h(b(r.maxWait)||0,t):a,d="trailing"in r?!!r.trailing:d),x.cancel=function(){void 0!==l&&clearTimeout(l),c=0,o=u=i=l=void 0},x.flush=function(){return void 0===l?s:k(m())},x}function y(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function b(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&d.call(e)==o}(e))return r;if(y(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=y(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=s.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):a.test(e)?r:+e}e.exports=function(e,t,r){var o=!0,i=!0;if("function"!=typeof e)throw new TypeError(n);return y(r)&&(o="leading"in r?!!r.leading:o,i="trailing"in r?!!r.trailing:i),g(e,t,{leading:o,maxWait:t,trailing:i})}},function(e,t,n){e.exports=n(8)},function(e,t,n){Promise.all([n.e(0),n.e(36)]).then(n.t.bind(null,9,7))},function(e,t,n){},function(e,t,n){"use strict";var r=n(1);n.n(r).a},function(e,t,n){"use strict";n.r(t); /*! @@ -11,4 +11,4 @@ var r=Object.freeze({});function o(e){return null==e}function i(e){return null!= * vue-router v3.0.7 * (c) 2019 Evan You * @license MIT - */function Fo(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function zo(e,t){for(var n in t)e[n]=t[n];return e}var Bo={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var n=t.props,r=t.children,o=t.parent,i=t.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,l=o.$route,u=o._routerViewCache||(o._routerViewCache={}),c=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&c++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=c,f)return a(u[s],i,r);var d=l.matched[c];if(!d)return u[s]=null,a();var h=u[s]=d.components[s];i.registerRouteInstance=function(e,t){var n=d.instances[s];(t&&n!==e||!t&&n===e)&&(d.instances[s]=t)},(i.hook||(i.hook={})).prepatch=function(e,t){d.instances[s]=t.componentInstance},i.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==d.instances[s]&&(d.instances[s]=e.componentInstance)};var v=i.props=function(e,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(e);case"boolean":return t?e.params:void 0;default:0}}(l,d.props&&d.props[s]);if(v){v=i.props=zo({},v);var m=i.attrs=i.attrs||{};for(var g in v)h.props&&g in h.props||(m[g]=v[g],delete v[g])}return a(h,i,r)}};var Ko=/[!'()*]/g,Vo=function(e){return"%"+e.charCodeAt(0).toString(16)},qo=/%2C/g,Ho=function(e){return encodeURIComponent(e).replace(Ko,Vo).replace(qo,",")},Wo=decodeURIComponent;function Xo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach(function(e){var n=e.replace(/\+/g," ").split("="),r=Wo(n.shift()),o=n.length>0?Wo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]}),t):t}function Go(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Ho(t);if(Array.isArray(n)){var r=[];return n.forEach(function(e){void 0!==e&&(null===e?r.push(Ho(t)):r.push(Ho(t)+"="+Ho(e)))}),r.join("&")}return Ho(t)+"="+Ho(n)}).filter(function(e){return e.length>0}).join("&"):null;return t?"?"+t:""}var Jo=/\/?$/;function Yo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Qo(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:ti(t,o),matched:e?ei(e):[]};return n&&(a.redirectedFrom=ti(n,o)),Object.freeze(a)}function Qo(e){if(Array.isArray(e))return e.map(Qo);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Qo(e[n]);return t}return e}var Zo=Yo(null,{path:"/"});function ei(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function ti(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Go)(r)+o}function ni(e,t){return t===Zo?e===t:!!t&&(e.path&&t.path?e.path.replace(Jo,"")===t.path.replace(Jo,"")&&e.hash===t.hash&&ri(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&ri(e.query,t.query)&&ri(e.params,t.params)))}function ri(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(function(n){var r=e[n],o=t[n];return"object"==typeof r&&"object"==typeof o?ri(r,o):String(r)===String(o)})}var oi,ii=[String,Object],ai=[String,Array],si={name:"RouterLink",props:{to:{type:ii,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:ai,default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==c?"router-link-exact-active":c,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=i.path?Yo(null,i,null,n):a;l[h]=ni(r,v),l[d]=this.exact?l[h]:function(e,t){return 0===e.path.replace(Jo,"/").indexOf(t.path.replace(Jo,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var m=function(e){li(e)&&(t.replace?n.replace(i):n.push(i))},g={click:li};Array.isArray(this.event)?this.event.forEach(function(e){g[e]=m}):g[this.event]=m;var y={class:l};if("a"===this.tag)y.on=g,y.attrs={href:s};else{var b=function e(t){if(t)for(var n,r=0;r=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),l=t&&t.path||"/",u=s.path?ci(s.path,l,n||o.append):l,c=function(e,t,n){void 0===t&&(t={});var r,o=n||Xo;try{r=o(e||"")}catch(e){r={}}for(var i in t)r[i]=t[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:u,query:c,hash:f}}function Li(e,t){var n=Pi(e),r=n.pathList,o=n.pathMap,i=n.nameMap;function a(e,n,a){var s=Ti(e,n,!1,t),u=s.name;if(u){var c=i[u];if(!c)return l(null,s);var f=c.regex.keys.filter(function(e){return!e.optional}).map(function(e){return e.name});if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var p in n.params)!(p in s.params)&&f.indexOf(p)>-1&&(s.params[p]=n.params[p]);return s.path=Si(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var d=0;d=e.length?n():e[o]?t(e[o],function(){r(o+1)}):r(o+1)};r(0)}function Qi(e){return function(t,n,r){var o=!1,i=0,a=null;Zi(e,function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=na(function(t){var o;((o=t).__esModule||ta&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:oi.extend(t),n.components[s]=t,--i<=0&&r()}),c=na(function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Fo(e)?e:new Error(t),r(a))});try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}}),o||r()}}function Zi(e,t){return ea(e.map(function(e){return Object.keys(e.components).map(function(n){return t(e.components[n],e.instances[n],e,n)})}))}function ea(e){return Array.prototype.concat.apply([],e)}var ta="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function na(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var ra=function(e,t){this.router=e,this.base=function(e){if(!e)if(ui){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Zo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function oa(e,t,n,r){var o=Zi(e,function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=oi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map(function(e){return n(e,r,o,i)}):n(a,r,o,i)});return ea(r?o.reverse():o)}function ia(e,t){if(t)return function(){return e.apply(t,arguments)}}ra.prototype.listen=function(e){this.cb=e},ra.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},ra.prototype.onError=function(e){this.errorCbs.push(e)},ra.prototype.transitionTo=function(e,t,n){var r=this,o=this.router.match(e,this.current);this.confirmTransition(o,function(){r.updateRoute(o),t&&t(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(e){e(o)}))},function(e){n&&n(e),e&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(t){t(e)}))})},ra.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current,i=function(e){Fo(e)&&(r.errorCbs.length?r.errorCbs.forEach(function(t){t(e)}):console.error(e)),n&&n(e)};if(ni(e,o)&&e.matched.length===o.matched.length)return this.ensureURL(),i();var a=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n-1?decodeURI(e.slice(0,r))+e.slice(r):decodeURI(e)}else n>-1&&(e=decodeURI(e.slice(0,n))+e.slice(n));return e}function fa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function pa(e){Vi?Gi(fa(e)):window.location.hash=e}function da(e){Vi?Ji(fa(e)):window.location.replace(fa(e))}var ha=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)},n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)},n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){t.index=n,t.updateRoute(r)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(ra),va=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Li(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),ui||(t="abstract"),this.mode=t,t){case"history":this.history=new aa(this,e.base);break;case"hash":this.history=new la(this,e.base,this.fallback);break;case"abstract":this.history=new ha(this,e.base);break;default:0}},ma={currentRoute:{configurable:!0}};function ya(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}va.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ma.currentRoute.get=function(){return this.history&&this.history.current},va.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null)}),!this.app){this.app=e;var n=this.history;if(n instanceof aa)n.transitionTo(n.getCurrentLocation());else if(n instanceof la){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},va.prototype.beforeEach=function(e){return ya(this.beforeHooks,e)},va.prototype.beforeResolve=function(e){return ya(this.resolveHooks,e)},va.prototype.afterEach=function(e){return ya(this.afterHooks,e)},va.prototype.onReady=function(e,t){this.history.onReady(e,t)},va.prototype.onError=function(e){this.history.onError(e)},va.prototype.push=function(e,t,n){this.history.push(e,t,n)},va.prototype.replace=function(e,t,n){this.history.replace(e,t,n)},va.prototype.go=function(e){this.history.go(e)},va.prototype.back=function(){this.go(-1)},va.prototype.forward=function(){this.go(1)},va.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},va.prototype.resolve=function(e,t,n){var r=Ti(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?fi(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},va.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Zo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(va.prototype,ma),va.install=function e(t){if(!e.installed||oi!==t){e.installed=!0,oi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Bo),t.component("RouterLink",si);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},va.version="3.0.7",ui&&window.Vue&&window.Vue.use(va);var ba=va;var _a={NotFound:()=>n.e(27).then(n.bind(null,327)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,326))},wa={"v-cbd95058":()=>n.e(28).then(n.bind(null,348)),"v-796bf18c":()=>n.e(29).then(n.bind(null,349)),"v-77cc1ec7":()=>n.e(20).then(n.bind(null,350)),"v-46ec0327":()=>n.e(10).then(n.bind(null,351)),"v-0a714732":()=>n.e(5).then(n.bind(null,352)),"v-986dbade":()=>n.e(18).then(n.bind(null,353)),"v-8d4dfbb6":()=>n.e(21).then(n.bind(null,354)),"v-76564011":()=>n.e(30).then(n.bind(null,355)),"v-8658c2f2":()=>n.e(8).then(n.bind(null,356)),"v-7434c187":()=>n.e(3).then(n.bind(null,341)),"v-0996c938":()=>n.e(31).then(n.bind(null,347)),"v-4db1779e":()=>n.e(32).then(n.bind(null,346)),"v-c0fa0cf2":()=>n.e(6).then(n.bind(null,345)),"v-6c5acde7":()=>n.e(12).then(n.bind(null,328)),"v-1263fa20":()=>n.e(33).then(n.bind(null,343)),"v-9d44dcf2":()=>n.e(11).then(n.bind(null,342)),"v-240eddf2":()=>n.e(13).then(n.bind(null,359)),"v-5db85fb7":()=>n.e(9).then(n.bind(null,340)),"v-7d2f6cc7":()=>n.e(14).then(n.bind(null,339)),"v-5be22288":()=>n.e(25).then(n.bind(null,338)),"v-61ad5b01":()=>n.e(34).then(n.bind(null,337)),"v-4b91c5e7":()=>n.e(24).then(n.bind(null,336)),"v-c621d7f2":()=>n.e(35).then(n.bind(null,335)),"v-cfc76602":()=>n.e(16).then(n.bind(null,334)),"v-7249b1a4":()=>n.e(22).then(n.bind(null,333)),"v-5566a571":()=>n.e(17).then(n.bind(null,332)),"v-76626758":()=>n.e(26).then(n.bind(null,331)),"v-554543f9":()=>n.e(4).then(n.bind(null,330)),"v-292f2847":()=>n.e(15).then(n.bind(null,344)),"v-3732859b":()=>n.e(19).then(n.bind(null,329)),"v-0393ebb2":()=>n.e(7).then(n.bind(null,357))};function ka(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const xa=/-(\w)/g,$a=ka(e=>e.replace(xa,(e,t)=>t?t.toUpperCase():"")),Ca=/\B([A-Z])/g,Aa=ka(e=>e.replace(Ca,"-$1").toLowerCase()),Oa=ka(e=>e.charAt(0).toUpperCase()+e.slice(1));function Ea(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Oa($a(t))):e(Oa(t))||e(Aa(t))}const Sa=Object.assign({},_a,wa),Pa=e=>Sa[e],ja=e=>wa[e],Ta=e=>_a[e],La=e=>Uo.component(e);function Ra(e){return Ea(ja,e)}function Ia(e){return Ea(Ta,e)}function Ma(e){return Ea(Pa,e)}function Da(e){return Ea(La,e)}function Na(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!Da(e)&&Ma(e)){const t=await Ma(e)();Uo.component(e,t.default)}}))}function Ua(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var Fa={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.$page.frontmatter.meta||[],t=e.slice(0);0===e.filter(e=>"description"===e.name).length&&t.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(e=>this.currentMetaTags.add(e)),this.currentMetaTags=new Set(za(t,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){za(null,this.currentMetaTags)}};function za(e,t){if(t&&[...t].forEach(e=>{document.head.removeChild(e)}),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}var Ba=n(3),Ka={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Ba)()(function(){this.setActiveHash()},300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let e=0;e=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Va=n(2),qa=n.n(Va),Ha=[Fa,Ka,{mounted(){qa.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Uo.component(e.name)||qa.a.start(),n()}),this.$router.afterEach(()=>{qa.a.done(),this.isSidebarOpen=!1})}}],Wa={methods:{getLayout:function(){if(this.$page.path){var e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}},computed:{layout:function(){var e=this.getLayout();return Ua("layout",e),Uo.component(e)}}},Xa=n(0),Ga=Object(Xa.a)(Wa,function(){var e=this.$createElement;return(this._self._c||e)(this.layout,{tag:"component"})},[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ga,"mixins",Ha);const Ja=[{name:"v-cbd95058",path:"/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-cbd95058").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-796bf18c",path:"/guide/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-796bf18c").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{name:"v-77cc1ec7",path:"/guide/cluster/computing.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-77cc1ec7").then(n)}},{name:"v-46ec0327",path:"/guide/cluster/namespace.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-46ec0327").then(n)}},{name:"v-0a714732",path:"/guide/cluster/storage.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0a714732").then(n)}},{name:"v-986dbade",path:"/guide/diagonize/events.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-986dbade").then(n)}},{name:"v-8d4dfbb6",path:"/guide/diagonize/logs.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-8d4dfbb6").then(n)}},{name:"v-76564011",path:"/guide/diagonize/port-forward.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-76564011").then(n)}},{name:"v-8658c2f2",path:"/guide/example/busybox.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-8658c2f2").then(n)}},{name:"v-7434c187",path:"/guide/example/monitor.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7434c187").then(n)}},{name:"v-0996c938",path:"/guide/monitor/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0996c938").then(n)}},{path:"/guide/monitor/index.html",redirect:"/guide/monitor/"},{name:"v-4db1779e",path:"/guide/monitor/apis.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-4db1779e").then(n)}},{name:"v-c0fa0cf2",path:"/guide/namespace/adjustion.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-c0fa0cf2").then(n)}},{name:"v-6c5acde7",path:"/guide/namespace/configMap.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-6c5acde7").then(n)}},{name:"v-1263fa20",path:"/guide/namespace/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-1263fa20").then(n)}},{path:"/guide/namespace/index.html",redirect:"/guide/namespace/"},{name:"v-9d44dcf2",path:"/guide/namespace/multi-env.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-9d44dcf2").then(n)}},{name:"v-240eddf2",path:"/guide/namespace/pvc.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-240eddf2").then(n)}},{name:"v-5db85fb7",path:"/guide/namespace/workload.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5db85fb7").then(n)}},{name:"v-7d2f6cc7",path:"/guide/namespace/secrets.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7d2f6cc7").then(n)}},{name:"v-5be22288",path:"/install/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5be22288").then(n)}},{path:"/install/index.html",redirect:"/install/"},{name:"v-61ad5b01",path:"/install/install-common-ingress.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-61ad5b01").then(n)}},{name:"v-4b91c5e7",path:"/install/install-common-vm.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-4b91c5e7").then(n)}},{name:"v-c621d7f2",path:"/install/install-dashboard.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-c621d7f2").then(n)}},{name:"v-cfc76602",path:"/install/install-kind.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-cfc76602").then(n)}},{name:"v-7249b1a4",path:"/overview/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7249b1a4").then(n)}},{path:"/overview/index.html",redirect:"/overview/"},{name:"v-5566a571",path:"/overview/why-kuboard.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5566a571").then(n)}},{name:"v-76626758",path:"/support/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-76626758").then(n)}},{path:"/support/index.html",redirect:"/support/"},{name:"v-554543f9",path:"/guide/example/import.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-554543f9").then(n)}},{name:"v-292f2847",path:"/install/install-k8s.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-292f2847").then(n)}},{name:"v-3732859b",path:"/install/install-kubernetes.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-3732859b").then(n)}},{name:"v-0393ebb2",path:"/overview/concepts.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0393ebb2").then(n)}},{path:"*",component:Ga}],Ya={title:"Kuboard",description:"A cool Kubernetes Dashboard",base:"/",pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/overview.png",actionText:"Get Started →",actionLink:"/overview/",features:[{title:"降低 Kubernetes 门槛",details:"创建工作负载,导出/导入配置,批量调整镜像版本,问题诊断"},{title:"直观显示微服务架构",details:"展现层/网关层/服务层/持久层/中间件层/监控层"},{title:"上下文关联监控",details:"资源层监控/中间件层监控/链路层监控"}],footer:"Copyright © 2019-present HuanQing Shao"},regularPath:"/",relativePath:"README.md",key:"v-cbd95058",path:"/"},{title:"使用手册",frontmatter:{},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-796bf18c",path:"/guide/"},{title:"计算资源管理",frontmatter:{},regularPath:"/guide/cluster/computing.html",relativePath:"guide/cluster/computing.md",key:"v-77cc1ec7",path:"/guide/cluster/computing.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"添加节点",slug:"添加节点"},{level:2,title:"查看节点",slug:"查看节点"},{level:2,title:"移除节点",slug:"移除节点"}]},{title:"名称空间管理",frontmatter:{},regularPath:"/guide/cluster/namespace.html",relativePath:"guide/cluster/namespace.md",key:"v-46ec0327",path:"/guide/cluster/namespace.html",headers:[{level:2,title:"创建名称空间",slug:"创建名称空间"},{level:3,title:"前提",slug:"前提"},{level:3,title:"准备",slug:"准备"}]},{title:"存储空间管理",frontmatter:{},regularPath:"/guide/cluster/storage.html",relativePath:"guide/cluster/storage.md",key:"v-0a714732",path:"/guide/cluster/storage.html",headers:[{level:2,title:"创建存储类",slug:"创建存储类"},{level:3,title:"在阿里云创建 NAS 服务",slug:"在阿里云创建-nas-服务"},{level:3,title:"在 Kuboard 创建存储类",slug:"在-kuboard-创建存储类"}]},{title:"集群事件",frontmatter:{},regularPath:"/guide/diagonize/events.html",relativePath:"guide/diagonize/events.md",key:"v-986dbade",path:"/guide/diagonize/events.html",headers:[{level:2,title:"错误事件提示",slug:"错误事件提示"},{level:2,title:"全局事件",slug:"全局事件"},{level:3,title:"查看全局事件",slug:"查看全局事件"},{level:3,title:"删除事件",slug:"删除事件"},{level:2,title:"微服务上下文相关的事件",slug:"微服务上下文相关的事件"}]},{title:"日志及终端",frontmatter:{},regularPath:"/guide/diagonize/logs.html",relativePath:"guide/diagonize/logs.md",key:"v-8d4dfbb6",path:"/guide/diagonize/logs.html"},{title:"端口转发",frontmatter:{},regularPath:"/guide/diagonize/port-forward.html",relativePath:"guide/diagonize/port-forward.md",key:"v-76564011",path:"/guide/diagonize/port-forward.html",headers:[{level:2,title:"Feature planned",slug:"feature-planned"}]},{title:"部署 busybox",frontmatter:{},regularPath:"/guide/example/busybox.html",relativePath:"guide/example/busybox.md",key:"v-8658c2f2",path:"/guide/example/busybox.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"部署 busybox",slug:"部署-busybox-2"},{level:2,title:"验证工作负载",slug:"验证工作负载"}]},{title:"监控 example (alpha)",frontmatter:{},regularPath:"/guide/example/monitor.html",relativePath:"guide/example/monitor.md",key:"v-7434c187",path:"/guide/example/monitor.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"安装监控套件",slug:"安装监控套件"},{level:3,title:"安装全局监控套件",slug:"安装全局监控套件"},{level:3,title:"安装名称空间监控套件",slug:"安装名称空间监控套件"},{level:3,title:"查看监控套件的工作负载",slug:"查看监控套件的工作负载"},{level:2,title:"重启 example 容器组",slug:"重启-example-容器组"},{level:2,title:"查看监控信息",slug:"查看监控信息"},{level:3,title:"查看资源层监控信息",slug:"查看资源层监控信息"},{level:3,title:"查看中间件层监控信息",slug:"查看中间件层监控信息"},{level:3,title:"查看链路追踪监控信息",slug:"查看链路追踪监控信息"}]},{title:"监控套件",frontmatter:{},regularPath:"/guide/monitor/",relativePath:"guide/monitor/README.md",key:"v-0996c938",path:"/guide/monitor/"},{title:"自定义监控套件",frontmatter:{},regularPath:"/guide/monitor/apis.html",relativePath:"guide/monitor/apis.md",key:"v-4db1779e",path:"/guide/monitor/apis.html"},{title:"日常调整",frontmatter:{},regularPath:"/guide/namespace/adjustion.html",relativePath:"guide/namespace/adjustion.md",key:"v-c0fa0cf2",path:"/guide/namespace/adjustion.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"批量删除容器组",slug:"批量删除容器组"},{level:2,title:"批量调整镜像版本",slug:"批量调整镜像版本"},{level:2,title:"批量调整工作负载的副本数",slug:"批量调整工作负载的副本数"}]},{title:"配置",frontmatter:{},regularPath:"/guide/namespace/configMap.html",relativePath:"guide/namespace/configMap.md",key:"v-6c5acde7",path:"/guide/namespace/configMap.html"},{title:"应用管理",frontmatter:{},regularPath:"/guide/namespace/",relativePath:"guide/namespace/index.md",key:"v-1263fa20",path:"/guide/namespace/",headers:[{level:2,title:"创建工作负载",slug:"创建工作负载"},{level:2,title:"删除工作负载",slug:"删除工作负载"},{level:2,title:"伸缩",slug:"伸缩"},{level:2,title:"升级工作负载版本",slug:"升级工作负载版本"},{level:2,title:"环境迁移",slug:"环境迁移"},{level:3,title:"导出",slug:"导出"},{level:3,title:"导入",slug:"导入"}]},{title:"多环境",frontmatter:{},regularPath:"/guide/namespace/multi-env.html",relativePath:"guide/namespace/multi-env.md",key:"v-9d44dcf2",path:"/guide/namespace/multi-env.html",headers:[{level:2,title:"导出配置",slug:"导出配置"},{level:3,title:"前提",slug:"前提"},{level:3,title:"操作步骤",slug:"操作步骤"},{level:2,title:"导入配置",slug:"导入配置"},{level:3,title:"前提",slug:"前提-2"},{level:3,title:"操作步骤",slug:"操作步骤-2"}]},{title:"存储卷声明",frontmatter:{},regularPath:"/guide/namespace/pvc.html",relativePath:"guide/namespace/pvc.md",key:"v-240eddf2",path:"/guide/namespace/pvc.html"},{title:"工作负载",frontmatter:{},regularPath:"/guide/namespace/workload.html",relativePath:"guide/namespace/workload.md",key:"v-5db85fb7",path:"/guide/namespace/workload.html",headers:[{level:2,title:"创建/查看/编辑工作负载",slug:"创建-查看-编辑工作负载"},{level:2,title:"伸缩",slug:"伸缩"},{level:2,title:"删除容器组",slug:"删除容器组"},{level:2,title:"诊断问题",slug:"诊断问题"},{level:3,title:"事件: Kubernetes 部署相关问题",slug:"事件:-kubernetes-部署相关问题"},{level:3,title:"日志: 容器运行时产生的错误",slug:"日志:-容器运行时产生的错误"},{level:3,title:"终端: 通过交互式命令,在容器内诊断问题",slug:"终端:-通过交互式命令,在容器内诊断问题"}]},{title:"Secrets",frontmatter:{},regularPath:"/guide/namespace/secrets.html",relativePath:"guide/namespace/secrets.md",key:"v-7d2f6cc7",path:"/guide/namespace/secrets.html"},{title:"概述",frontmatter:{},regularPath:"/install/",relativePath:"install/README.md",key:"v-5be22288",path:"/install/"},{title:"安装 Ingress Controller",frontmatter:{},regularPath:"/install/install-common-ingress.html",relativePath:"install/install-common-ingress.md",key:"v-61ad5b01",path:"/install/install-common-ingress.html",headers:[{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 apple-master-a-1 上执行",slug:"在-apple-master-a-1-上执行"},{level:3,title:"在IaaS云控制台完成如下配置(公网ELB)",slug:"在iaas云控制台完成如下配置(公网elb)"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"制作标准机镜像",frontmatter:{},regularPath:"/install/install-common-vm.html",relativePath:"install/install-common-vm.md",key:"v-4b91c5e7",path:"/install/install-common-vm.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"}]},{title:"安装 kuboard",frontmatter:{},regularPath:"/install/install-dashboard.html",relativePath:"install/install-dashboard.md",key:"v-c621d7f2",path:"/install/install-dashboard.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"兼容性",slug:"兼容性"},{level:2,title:"安装",slug:"安装"},{level:2,title:"获取 token",slug:"获取-token"},{level:3,title:"获取管理员用户 token",slug:"获取管理员用户-token"},{level:3,title:"获取只读用户的Token",slug:"获取只读用户的token"},{level:2,title:"访问 Kuboard",slug:"访问-kuboard"},{level:3,title:"通过域名访问",slug:"通过域名访问"},{level:3,title:"通过 NodePort 访问",slug:"通过-nodeport-访问"}]},{title:"在单机使用 kind 安装 Kubernetes",frontmatter:{},regularPath:"/install/install-kind.html",relativePath:"install/install-kind.md",key:"v-cfc76602",path:"/install/install-kind.html",headers:[{level:2,title:"环境简介",slug:"环境简介"},{level:3,title:"kind 简介与安装",slug:"kind-简介与安装"},{level:3,title:"docker 环境",slug:"docker-环境"},{level:3,title:"kubectl 安装",slug:"kubectl-安装"},{level:2,title:"k8s 集群搭建",slug:"k8s-集群搭建"},{level:3,title:"准备 kind 搭建集群配置文件 kind-config.yaml",slug:"准备-kind-搭建集群配置文件-kind-config-yaml"},{level:3,title:"使用 kind 搭建集群",slug:"使用-kind-搭建集群"},{level:3,title:"创建成功",slug:"创建成功"},{level:2,title:"kuboard 安装",slug:"kuboard-安装"},{level:3,title:"获取并修改 yaml 文件",slug:"获取并修改-yaml-文件"},{level:3,title:"执行安装",slug:"执行安装"},{level:3,title:"查看启动状态",slug:"查看启动状态"},{level:3,title:"访问 kuboard 页面",slug:"访问-kuboard-页面"}]},{title:"Kuboard",frontmatter:{},regularPath:"/overview/",relativePath:"overview/README.md",key:"v-7249b1a4",path:"/overview/",headers:[{level:2,title:"Kuboard",slug:"kuboard"},{level:2,title:"Demo",slug:"demo"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"在线提问",slug:"在线提问"}]},{title:"为什么选择 Kuboard",frontmatter:{},regularPath:"/overview/why-kuboard.html",relativePath:"overview/why-kuboard.md",key:"v-5566a571",path:"/overview/why-kuboard.html",headers:[{level:2,title:"为什么选择 Kuboard",slug:"为什么选择-kuboard"},{level:2,title:"Kubernetes 入门学习者",slug:"kubernetes-入门学习者"},{level:3,title:"集群概览",slug:"集群概览"},{level:3,title:"名称空间",slug:"名称空间"},{level:3,title:"无需手写 Yaml",slug:"无需手写-yaml"},{level:2,title:"Kubernetes 日常运维人员",slug:"kubernetes-日常运维人员"},{level:3,title:"纯图形界面运维 Kubernetes",slug:"纯图形界面运维-kubernetes"},{level:3,title:"多环境复制",slug:"多环境复制"},{level:3,title:"应用升级",slug:"应用升级"},{level:2,title:"0 侵入性",slug:"_0-侵入性"},{level:2,title:"更多资料",slug:"更多资料"}]},{title:"提交问题",frontmatter:{},regularPath:"/support/",relativePath:"support/README.md",key:"v-76626758",path:"/support/",headers:[{level:2,title:"提交问题",slug:"提交问题"},{level:2,title:"在线提问",slug:"在线提问"}]},{title:"导入 example 微服务",frontmatter:{},regularPath:"/guide/example/import.html",relativePath:"guide/example/import.md",key:"v-554543f9",path:"/guide/example/import.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"创建存储资源",slug:"创建存储资源"},{level:2,title:"创建名称空间",slug:"创建名称空间"},{level:2,title:"导入 example",slug:"导入-example"},{level:2,title:"验证 web-example",slug:"验证-web-example"}]},{title:"安装 Kubernetes 用于测试",frontmatter:{},regularPath:"/install/install-k8s.html",relativePath:"install/install-k8s.md",key:"v-292f2847",path:"/install/install-k8s.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"},{level:2,title:"初始化 master 节点",slug:"初始化-master-节点"},{level:3,title:"在 demo-master-a-1 机器上执行",slug:"在-demo-master-a-1-机器上执行"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果"},{level:2,title:"初始化 worker节点",slug:"初始化-worker节点"},{level:3,title:"获得 join命令参数",slug:"获得-join命令参数"},{level:3,title:"初始化worker",slug:"初始化worker"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果-2"},{level:2,title:"移除 worker 节点",slug:"移除-worker-节点"},{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 demo-master-a-1 上执行",slug:"在-demo-master-a-1-上执行"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"安装 Kubernetes",frontmatter:{},regularPath:"/install/install-kubernetes.html",relativePath:"install/install-kubernetes.md",key:"v-3732859b",path:"/install/install-kubernetes.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"},{level:2,title:"初始化API Server",slug:"初始化api-server"},{level:3,title:"创建 ApiServer 的 ELB(私网)",slug:"创建-apiserver-的-elb(私网)"},{level:3,title:"初始化第一个master节点",slug:"初始化第一个master节点"},{level:3,title:"初始化第二、三个master节点",slug:"初始化第二、三个master节点"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果"},{level:2,title:"初始化 worker节点",slug:"初始化-worker节点"},{level:3,title:"获得 join命令参数",slug:"获得-join命令参数"},{level:3,title:"初始化worker",slug:"初始化worker"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果-2"},{level:2,title:"移除 worker 节点",slug:"移除-worker-节点"},{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 apple-master-a-1 上执行",slug:"在-apple-master-a-1-上执行"},{level:3,title:"在IaaS云控制台完成如下配置(公网ELB)",slug:"在iaas云控制台完成如下配置(公网elb)"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"Kubernetes 入门",frontmatter:{},regularPath:"/overview/concepts.html",relativePath:"overview/concepts.md",key:"v-0393ebb2",path:"/overview/concepts.html",headers:[{level:2,title:"Kubernetes 学习门槛在哪儿",slug:"kubernetes-学习门槛在哪儿"},{level:2,title:"降低 Kubernetes 学习门槛",slug:"降低-kubernetes-学习门槛"},{level:2,title:"工作负载编辑器设计",slug:"工作负载编辑器设计"},{level:2,title:"工作负载编辑器介绍",slug:"工作负载编辑器介绍"},{level:3,title:"1. 基本信息",slug:"_1-基本信息"},{level:3,title:"2. 数据卷",slug:"_2-数据卷"},{level:3,title:"3. 身份信息",slug:"_3-身份信息"},{level:3,title:"4. 容器",slug:"_4-容器"},{level:3,title:"5. 访问方式",slug:"_5-访问方式"},{level:3,title:"6. 互联网入口",slug:"_6-互联网入口"}]}],themeConfig:{nav:[{text:"简介",link:"/overview/"},{text:"安装",link:"/install/"},{text:"使用",link:"/guide/"},{text:"支持",link:"/support/"}],displayAllHeaders:!1,sidebarDepth:2,serviceWorker:{updatePopup:!0},sidebar:{"/overview/":[["","简介"],["why-kuboard","为什么选择 Kuboard"],["concepts","如何降低K8S学习门槛"]],"/install/":["","install-k8s","install-kubernetes","install-dashboard"],"/guide/":[{title:"概述",collapsable:!1,children:[["","概述"]]},{title:"Example",collapsable:!1,children:["example/busybox","example/import","example/monitor"]},{title:"集群管理",collapsable:!1,children:["cluster/computing","cluster/storage","cluster/namespace"]},{title:"应用管理",collapsable:!1,children:["namespace/workload","namespace/secrets","namespace/configMap","namespace/pvc","namespace/adjustion","namespace/multi-env"]},{title:"问题诊断",collapsable:!1,children:["diagonize/events","diagonize/logs","diagonize/port-forward"]},{title:"监控套件 (alpha)",collapsable:!1,children:["monitor/","monitor/apis"]}],"/support/":[""]}}};n(5);Uo.component("Badge",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,358)));n(6);var Qa=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({router:e})=>{"undefined"!=typeof window&&(function(e,t,n,r,o,i,a){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,i=t.createElement(n),a=t.getElementsByTagName(n)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a)}(window,document,"script",0,"ga"),ga("create","UA-144196556-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),e.afterEach(function(e){ga("set","page",e.fullPath),ga("send","pageview")}))}],Za=[];class es{constructor(){this.store=new Uo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Uo.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}class ts extends es{}Object.assign(ts.prototype,{getPageAsyncComponent:Ra,getLayoutAsyncComponent:Ia,getAsyncComponent:Ma,getVueComponent:Da});var ns={install(e){const t=new ts;e.$vuepress=t,e.prototype.$vuepress=t}};function rs(e,t){return e.options.routes.filter(e=>e.path.toLowerCase()===t.toLowerCase()).length>0}var os={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return Ua("pageKey",t),Uo.component(t)||Uo.component(t,Ra(t)),e(t||"")}},is={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:[`content__${t.slotKey}`]},n()[t.slotKey])},as=(n(7),Object(Xa.a)({},function(e,t){var n=t._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),t._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])},[],!0,null,null,null).exports),ss={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Uo.config.productionTip=!1,Uo.use(ba),Uo.use(ns),Uo.mixin(function(e,t,n=Uo){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t}),Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>(class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||""}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Uo.$vuepress.$get("disableScrollBehavior")&&{selector:e.hash}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(rs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";rs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";rs(e,o)?r(o):rs(e,n)?r(n):r()}})}(n);const r={};try{Qa.forEach(t=>{"function"==typeof t&&t({Vue:Uo,options:r,router:n,siteData:Ya,isServer:e})})}catch(e){console.error(e)}return{app:new Uo(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("router-view",{ref:"layout"}),e("div",{class:"global-ui"},Za.map(t=>e(t)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.0.2",hash:"493e427"},us.onReady(()=>{ls.$mount("#app")})}]); \ No newline at end of file + */function Fo(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function zo(e,t){for(var n in t)e[n]=t[n];return e}var Bo={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var n=t.props,r=t.children,o=t.parent,i=t.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,l=o.$route,u=o._routerViewCache||(o._routerViewCache={}),c=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&c++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=c,f)return a(u[s],i,r);var d=l.matched[c];if(!d)return u[s]=null,a();var h=u[s]=d.components[s];i.registerRouteInstance=function(e,t){var n=d.instances[s];(t&&n!==e||!t&&n===e)&&(d.instances[s]=t)},(i.hook||(i.hook={})).prepatch=function(e,t){d.instances[s]=t.componentInstance},i.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==d.instances[s]&&(d.instances[s]=e.componentInstance)};var v=i.props=function(e,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(e);case"boolean":return t?e.params:void 0;default:0}}(l,d.props&&d.props[s]);if(v){v=i.props=zo({},v);var m=i.attrs=i.attrs||{};for(var g in v)h.props&&g in h.props||(m[g]=v[g],delete v[g])}return a(h,i,r)}};var Ko=/[!'()*]/g,Vo=function(e){return"%"+e.charCodeAt(0).toString(16)},qo=/%2C/g,Ho=function(e){return encodeURIComponent(e).replace(Ko,Vo).replace(qo,",")},Wo=decodeURIComponent;function Xo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach(function(e){var n=e.replace(/\+/g," ").split("="),r=Wo(n.shift()),o=n.length>0?Wo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]}),t):t}function Go(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Ho(t);if(Array.isArray(n)){var r=[];return n.forEach(function(e){void 0!==e&&(null===e?r.push(Ho(t)):r.push(Ho(t)+"="+Ho(e)))}),r.join("&")}return Ho(t)+"="+Ho(n)}).filter(function(e){return e.length>0}).join("&"):null;return t?"?"+t:""}var Jo=/\/?$/;function Yo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Qo(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:ti(t,o),matched:e?ei(e):[]};return n&&(a.redirectedFrom=ti(n,o)),Object.freeze(a)}function Qo(e){if(Array.isArray(e))return e.map(Qo);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Qo(e[n]);return t}return e}var Zo=Yo(null,{path:"/"});function ei(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function ti(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Go)(r)+o}function ni(e,t){return t===Zo?e===t:!!t&&(e.path&&t.path?e.path.replace(Jo,"")===t.path.replace(Jo,"")&&e.hash===t.hash&&ri(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&ri(e.query,t.query)&&ri(e.params,t.params)))}function ri(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(function(n){var r=e[n],o=t[n];return"object"==typeof r&&"object"==typeof o?ri(r,o):String(r)===String(o)})}var oi,ii=[String,Object],ai=[String,Array],si={name:"RouterLink",props:{to:{type:ii,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:ai,default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==c?"router-link-exact-active":c,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=i.path?Yo(null,i,null,n):a;l[h]=ni(r,v),l[d]=this.exact?l[h]:function(e,t){return 0===e.path.replace(Jo,"/").indexOf(t.path.replace(Jo,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var m=function(e){li(e)&&(t.replace?n.replace(i):n.push(i))},g={click:li};Array.isArray(this.event)?this.event.forEach(function(e){g[e]=m}):g[this.event]=m;var y={class:l};if("a"===this.tag)y.on=g,y.attrs={href:s};else{var b=function e(t){if(t)for(var n,r=0;r=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),l=t&&t.path||"/",u=s.path?ci(s.path,l,n||o.append):l,c=function(e,t,n){void 0===t&&(t={});var r,o=n||Xo;try{r=o(e||"")}catch(e){r={}}for(var i in t)r[i]=t[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:u,query:c,hash:f}}function Li(e,t){var n=Pi(e),r=n.pathList,o=n.pathMap,i=n.nameMap;function a(e,n,a){var s=Ti(e,n,!1,t),u=s.name;if(u){var c=i[u];if(!c)return l(null,s);var f=c.regex.keys.filter(function(e){return!e.optional}).map(function(e){return e.name});if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var p in n.params)!(p in s.params)&&f.indexOf(p)>-1&&(s.params[p]=n.params[p]);return s.path=Si(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var d=0;d=e.length?n():e[o]?t(e[o],function(){r(o+1)}):r(o+1)};r(0)}function Qi(e){return function(t,n,r){var o=!1,i=0,a=null;Zi(e,function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=na(function(t){var o;((o=t).__esModule||ta&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:oi.extend(t),n.components[s]=t,--i<=0&&r()}),c=na(function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Fo(e)?e:new Error(t),r(a))});try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}}),o||r()}}function Zi(e,t){return ea(e.map(function(e){return Object.keys(e.components).map(function(n){return t(e.components[n],e.instances[n],e,n)})}))}function ea(e){return Array.prototype.concat.apply([],e)}var ta="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function na(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var ra=function(e,t){this.router=e,this.base=function(e){if(!e)if(ui){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Zo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function oa(e,t,n,r){var o=Zi(e,function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=oi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map(function(e){return n(e,r,o,i)}):n(a,r,o,i)});return ea(r?o.reverse():o)}function ia(e,t){if(t)return function(){return e.apply(t,arguments)}}ra.prototype.listen=function(e){this.cb=e},ra.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},ra.prototype.onError=function(e){this.errorCbs.push(e)},ra.prototype.transitionTo=function(e,t,n){var r=this,o=this.router.match(e,this.current);this.confirmTransition(o,function(){r.updateRoute(o),t&&t(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(e){e(o)}))},function(e){n&&n(e),e&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(t){t(e)}))})},ra.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current,i=function(e){Fo(e)&&(r.errorCbs.length?r.errorCbs.forEach(function(t){t(e)}):console.error(e)),n&&n(e)};if(ni(e,o)&&e.matched.length===o.matched.length)return this.ensureURL(),i();var a=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n-1?decodeURI(e.slice(0,r))+e.slice(r):decodeURI(e)}else n>-1&&(e=decodeURI(e.slice(0,n))+e.slice(n));return e}function fa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function pa(e){Vi?Gi(fa(e)):window.location.hash=e}function da(e){Vi?Ji(fa(e)):window.location.replace(fa(e))}var ha=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)},n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)},n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){t.index=n,t.updateRoute(r)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(ra),va=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Li(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),ui||(t="abstract"),this.mode=t,t){case"history":this.history=new aa(this,e.base);break;case"hash":this.history=new la(this,e.base,this.fallback);break;case"abstract":this.history=new ha(this,e.base);break;default:0}},ma={currentRoute:{configurable:!0}};function ya(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}va.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ma.currentRoute.get=function(){return this.history&&this.history.current},va.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null)}),!this.app){this.app=e;var n=this.history;if(n instanceof aa)n.transitionTo(n.getCurrentLocation());else if(n instanceof la){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},va.prototype.beforeEach=function(e){return ya(this.beforeHooks,e)},va.prototype.beforeResolve=function(e){return ya(this.resolveHooks,e)},va.prototype.afterEach=function(e){return ya(this.afterHooks,e)},va.prototype.onReady=function(e,t){this.history.onReady(e,t)},va.prototype.onError=function(e){this.history.onError(e)},va.prototype.push=function(e,t,n){this.history.push(e,t,n)},va.prototype.replace=function(e,t,n){this.history.replace(e,t,n)},va.prototype.go=function(e){this.history.go(e)},va.prototype.back=function(){this.go(-1)},va.prototype.forward=function(){this.go(1)},va.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},va.prototype.resolve=function(e,t,n){var r=Ti(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?fi(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},va.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Zo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(va.prototype,ma),va.install=function e(t){if(!e.installed||oi!==t){e.installed=!0,oi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Bo),t.component("RouterLink",si);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},va.version="3.0.7",ui&&window.Vue&&window.Vue.use(va);var ba=va;var _a={NotFound:()=>n.e(27).then(n.bind(null,327)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,326))},wa={"v-cbd95058":()=>n.e(28).then(n.bind(null,348)),"v-796bf18c":()=>n.e(29).then(n.bind(null,349)),"v-77cc1ec7":()=>n.e(20).then(n.bind(null,350)),"v-46ec0327":()=>n.e(10).then(n.bind(null,351)),"v-0a714732":()=>n.e(5).then(n.bind(null,352)),"v-986dbade":()=>n.e(18).then(n.bind(null,353)),"v-8d4dfbb6":()=>n.e(21).then(n.bind(null,354)),"v-8658c2f2":()=>n.e(8).then(n.bind(null,355)),"v-76564011":()=>n.e(30).then(n.bind(null,356)),"v-7434c187":()=>n.e(3).then(n.bind(null,341)),"v-0996c938":()=>n.e(31).then(n.bind(null,347)),"v-c0fa0cf2":()=>n.e(6).then(n.bind(null,346)),"v-6c5acde7":()=>n.e(12).then(n.bind(null,345)),"v-4db1779e":()=>n.e(32).then(n.bind(null,328)),"v-1263fa20":()=>n.e(33).then(n.bind(null,343)),"v-9d44dcf2":()=>n.e(11).then(n.bind(null,342)),"v-240eddf2":()=>n.e(13).then(n.bind(null,359)),"v-7d2f6cc7":()=>n.e(14).then(n.bind(null,340)),"v-5db85fb7":()=>n.e(9).then(n.bind(null,339)),"v-5be22288":()=>n.e(25).then(n.bind(null,338)),"v-61ad5b01":()=>n.e(34).then(n.bind(null,337)),"v-4b91c5e7":()=>n.e(24).then(n.bind(null,336)),"v-c621d7f2":()=>n.e(35).then(n.bind(null,335)),"v-cfc76602":()=>n.e(16).then(n.bind(null,334)),"v-7249b1a4":()=>n.e(22).then(n.bind(null,333)),"v-5566a571":()=>n.e(17).then(n.bind(null,332)),"v-76626758":()=>n.e(26).then(n.bind(null,331)),"v-554543f9":()=>n.e(4).then(n.bind(null,330)),"v-292f2847":()=>n.e(15).then(n.bind(null,344)),"v-3732859b":()=>n.e(19).then(n.bind(null,329)),"v-0393ebb2":()=>n.e(7).then(n.bind(null,357))};function ka(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const xa=/-(\w)/g,$a=ka(e=>e.replace(xa,(e,t)=>t?t.toUpperCase():"")),Ca=/\B([A-Z])/g,Aa=ka(e=>e.replace(Ca,"-$1").toLowerCase()),Oa=ka(e=>e.charAt(0).toUpperCase()+e.slice(1));function Ea(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Oa($a(t))):e(Oa(t))||e(Aa(t))}const Sa=Object.assign({},_a,wa),Pa=e=>Sa[e],ja=e=>wa[e],Ta=e=>_a[e],La=e=>Uo.component(e);function Ra(e){return Ea(ja,e)}function Ia(e){return Ea(Ta,e)}function Ma(e){return Ea(Pa,e)}function Da(e){return Ea(La,e)}function Na(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!Da(e)&&Ma(e)){const t=await Ma(e)();Uo.component(e,t.default)}}))}function Ua(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var Fa={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.$page.frontmatter.meta||[],t=e.slice(0);0===e.filter(e=>"description"===e.name).length&&t.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(e=>this.currentMetaTags.add(e)),this.currentMetaTags=new Set(za(t,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){za(null,this.currentMetaTags)}};function za(e,t){if(t&&[...t].forEach(e=>{document.head.removeChild(e)}),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}var Ba=n(3),Ka={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Ba)()(function(){this.setActiveHash()},300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let e=0;e=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Va=n(2),qa=n.n(Va),Ha=[Fa,Ka,{mounted(){qa.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Uo.component(e.name)||qa.a.start(),n()}),this.$router.afterEach(()=>{qa.a.done(),this.isSidebarOpen=!1})}}],Wa={methods:{getLayout:function(){if(this.$page.path){var e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}},computed:{layout:function(){var e=this.getLayout();return Ua("layout",e),Uo.component(e)}}},Xa=n(0),Ga=Object(Xa.a)(Wa,function(){var e=this.$createElement;return(this._self._c||e)(this.layout,{tag:"component"})},[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ga,"mixins",Ha);const Ja=[{name:"v-cbd95058",path:"/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-cbd95058").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-796bf18c",path:"/guide/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-796bf18c").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{name:"v-77cc1ec7",path:"/guide/cluster/computing.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-77cc1ec7").then(n)}},{name:"v-46ec0327",path:"/guide/cluster/namespace.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-46ec0327").then(n)}},{name:"v-0a714732",path:"/guide/cluster/storage.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0a714732").then(n)}},{name:"v-986dbade",path:"/guide/diagonize/events.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-986dbade").then(n)}},{name:"v-8d4dfbb6",path:"/guide/diagonize/logs.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-8d4dfbb6").then(n)}},{name:"v-8658c2f2",path:"/guide/example/busybox.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-8658c2f2").then(n)}},{name:"v-76564011",path:"/guide/diagonize/port-forward.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-76564011").then(n)}},{name:"v-7434c187",path:"/guide/example/monitor.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7434c187").then(n)}},{name:"v-0996c938",path:"/guide/monitor/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0996c938").then(n)}},{path:"/guide/monitor/index.html",redirect:"/guide/monitor/"},{name:"v-c0fa0cf2",path:"/guide/namespace/adjustion.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-c0fa0cf2").then(n)}},{name:"v-6c5acde7",path:"/guide/namespace/configMap.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-6c5acde7").then(n)}},{name:"v-4db1779e",path:"/guide/monitor/apis.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-4db1779e").then(n)}},{name:"v-1263fa20",path:"/guide/namespace/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-1263fa20").then(n)}},{path:"/guide/namespace/index.html",redirect:"/guide/namespace/"},{name:"v-9d44dcf2",path:"/guide/namespace/multi-env.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-9d44dcf2").then(n)}},{name:"v-240eddf2",path:"/guide/namespace/pvc.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-240eddf2").then(n)}},{name:"v-7d2f6cc7",path:"/guide/namespace/secrets.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7d2f6cc7").then(n)}},{name:"v-5db85fb7",path:"/guide/namespace/workload.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5db85fb7").then(n)}},{name:"v-5be22288",path:"/install/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5be22288").then(n)}},{path:"/install/index.html",redirect:"/install/"},{name:"v-61ad5b01",path:"/install/install-common-ingress.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-61ad5b01").then(n)}},{name:"v-4b91c5e7",path:"/install/install-common-vm.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-4b91c5e7").then(n)}},{name:"v-c621d7f2",path:"/install/install-dashboard.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-c621d7f2").then(n)}},{name:"v-cfc76602",path:"/install/install-kind.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-cfc76602").then(n)}},{name:"v-7249b1a4",path:"/overview/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-7249b1a4").then(n)}},{path:"/overview/index.html",redirect:"/overview/"},{name:"v-5566a571",path:"/overview/why-kuboard.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5566a571").then(n)}},{name:"v-76626758",path:"/support/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-76626758").then(n)}},{path:"/support/index.html",redirect:"/support/"},{name:"v-554543f9",path:"/guide/example/import.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-554543f9").then(n)}},{name:"v-292f2847",path:"/install/install-k8s.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-292f2847").then(n)}},{name:"v-3732859b",path:"/install/install-kubernetes.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-3732859b").then(n)}},{name:"v-0393ebb2",path:"/overview/concepts.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-0393ebb2").then(n)}},{path:"*",component:Ga}],Ya={title:"Kuboard",description:"A cool Kubernetes Dashboard",base:"/",pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/overview.png",actionText:"Get Started →",actionLink:"/overview/",features:[{title:"降低 Kubernetes 门槛",details:"创建工作负载,导出/导入配置,批量调整镜像版本,问题诊断"},{title:"直观显示微服务架构",details:"展现层/网关层/服务层/持久层/中间件层/监控层"},{title:"上下文关联监控",details:"资源层监控/中间件层监控/链路层监控"}],footer:"Copyright © 2019-present HuanQing Shao"},regularPath:"/",relativePath:"README.md",key:"v-cbd95058",path:"/"},{title:"使用手册",frontmatter:{},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-796bf18c",path:"/guide/"},{title:"计算资源管理",frontmatter:{},regularPath:"/guide/cluster/computing.html",relativePath:"guide/cluster/computing.md",key:"v-77cc1ec7",path:"/guide/cluster/computing.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"添加节点",slug:"添加节点"},{level:2,title:"查看节点",slug:"查看节点"},{level:2,title:"移除节点",slug:"移除节点"}]},{title:"名称空间管理",frontmatter:{},regularPath:"/guide/cluster/namespace.html",relativePath:"guide/cluster/namespace.md",key:"v-46ec0327",path:"/guide/cluster/namespace.html",headers:[{level:2,title:"创建名称空间",slug:"创建名称空间"},{level:3,title:"前提",slug:"前提"},{level:3,title:"准备",slug:"准备"}]},{title:"存储空间管理",frontmatter:{},regularPath:"/guide/cluster/storage.html",relativePath:"guide/cluster/storage.md",key:"v-0a714732",path:"/guide/cluster/storage.html",headers:[{level:2,title:"创建存储类",slug:"创建存储类"},{level:3,title:"在阿里云创建 NAS 服务",slug:"在阿里云创建-nas-服务"},{level:3,title:"在 Kuboard 创建存储类",slug:"在-kuboard-创建存储类"}]},{title:"集群事件",frontmatter:{},regularPath:"/guide/diagonize/events.html",relativePath:"guide/diagonize/events.md",key:"v-986dbade",path:"/guide/diagonize/events.html",headers:[{level:2,title:"错误事件提示",slug:"错误事件提示"},{level:2,title:"全局事件",slug:"全局事件"},{level:3,title:"查看全局事件",slug:"查看全局事件"},{level:3,title:"删除事件",slug:"删除事件"},{level:2,title:"微服务上下文相关的事件",slug:"微服务上下文相关的事件"}]},{title:"日志及终端",frontmatter:{},regularPath:"/guide/diagonize/logs.html",relativePath:"guide/diagonize/logs.md",key:"v-8d4dfbb6",path:"/guide/diagonize/logs.html"},{title:"部署 busybox",frontmatter:{},regularPath:"/guide/example/busybox.html",relativePath:"guide/example/busybox.md",key:"v-8658c2f2",path:"/guide/example/busybox.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"部署 busybox",slug:"部署-busybox-2"},{level:2,title:"验证工作负载",slug:"验证工作负载"}]},{title:"端口转发",frontmatter:{},regularPath:"/guide/diagonize/port-forward.html",relativePath:"guide/diagonize/port-forward.md",key:"v-76564011",path:"/guide/diagonize/port-forward.html",headers:[{level:2,title:"Feature planned",slug:"feature-planned"}]},{title:"监控 example (alpha)",frontmatter:{},regularPath:"/guide/example/monitor.html",relativePath:"guide/example/monitor.md",key:"v-7434c187",path:"/guide/example/monitor.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"安装监控套件",slug:"安装监控套件"},{level:3,title:"安装全局监控套件",slug:"安装全局监控套件"},{level:3,title:"安装名称空间监控套件",slug:"安装名称空间监控套件"},{level:3,title:"查看监控套件的工作负载",slug:"查看监控套件的工作负载"},{level:2,title:"重启 example 容器组",slug:"重启-example-容器组"},{level:2,title:"查看监控信息",slug:"查看监控信息"},{level:3,title:"查看资源层监控信息",slug:"查看资源层监控信息"},{level:3,title:"查看中间件层监控信息",slug:"查看中间件层监控信息"},{level:3,title:"查看链路追踪监控信息",slug:"查看链路追踪监控信息"}]},{title:"监控套件",frontmatter:{},regularPath:"/guide/monitor/",relativePath:"guide/monitor/README.md",key:"v-0996c938",path:"/guide/monitor/"},{title:"日常调整",frontmatter:{},regularPath:"/guide/namespace/adjustion.html",relativePath:"guide/namespace/adjustion.md",key:"v-c0fa0cf2",path:"/guide/namespace/adjustion.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"批量删除容器组",slug:"批量删除容器组"},{level:2,title:"批量调整镜像版本",slug:"批量调整镜像版本"},{level:2,title:"批量调整工作负载的副本数",slug:"批量调整工作负载的副本数"}]},{title:"配置",frontmatter:{},regularPath:"/guide/namespace/configMap.html",relativePath:"guide/namespace/configMap.md",key:"v-6c5acde7",path:"/guide/namespace/configMap.html"},{title:"自定义监控套件",frontmatter:{},regularPath:"/guide/monitor/apis.html",relativePath:"guide/monitor/apis.md",key:"v-4db1779e",path:"/guide/monitor/apis.html"},{title:"应用管理",frontmatter:{},regularPath:"/guide/namespace/",relativePath:"guide/namespace/index.md",key:"v-1263fa20",path:"/guide/namespace/",headers:[{level:2,title:"创建工作负载",slug:"创建工作负载"},{level:2,title:"删除工作负载",slug:"删除工作负载"},{level:2,title:"伸缩",slug:"伸缩"},{level:2,title:"升级工作负载版本",slug:"升级工作负载版本"},{level:2,title:"环境迁移",slug:"环境迁移"},{level:3,title:"导出",slug:"导出"},{level:3,title:"导入",slug:"导入"}]},{title:"多环境",frontmatter:{},regularPath:"/guide/namespace/multi-env.html",relativePath:"guide/namespace/multi-env.md",key:"v-9d44dcf2",path:"/guide/namespace/multi-env.html",headers:[{level:2,title:"导出配置",slug:"导出配置"},{level:3,title:"前提",slug:"前提"},{level:3,title:"操作步骤",slug:"操作步骤"},{level:2,title:"导入配置",slug:"导入配置"},{level:3,title:"前提",slug:"前提-2"},{level:3,title:"操作步骤",slug:"操作步骤-2"}]},{title:"存储卷声明",frontmatter:{},regularPath:"/guide/namespace/pvc.html",relativePath:"guide/namespace/pvc.md",key:"v-240eddf2",path:"/guide/namespace/pvc.html"},{title:"Secrets",frontmatter:{},regularPath:"/guide/namespace/secrets.html",relativePath:"guide/namespace/secrets.md",key:"v-7d2f6cc7",path:"/guide/namespace/secrets.html"},{title:"工作负载",frontmatter:{},regularPath:"/guide/namespace/workload.html",relativePath:"guide/namespace/workload.md",key:"v-5db85fb7",path:"/guide/namespace/workload.html",headers:[{level:2,title:"创建/查看/编辑工作负载",slug:"创建-查看-编辑工作负载"},{level:2,title:"伸缩",slug:"伸缩"},{level:2,title:"删除容器组",slug:"删除容器组"},{level:2,title:"诊断问题",slug:"诊断问题"},{level:3,title:"事件: Kubernetes 部署相关问题",slug:"事件:-kubernetes-部署相关问题"},{level:3,title:"日志: 容器运行时产生的错误",slug:"日志:-容器运行时产生的错误"},{level:3,title:"终端: 通过交互式命令,在容器内诊断问题",slug:"终端:-通过交互式命令,在容器内诊断问题"}]},{title:"概述",frontmatter:{},regularPath:"/install/",relativePath:"install/README.md",key:"v-5be22288",path:"/install/"},{title:"安装 Ingress Controller",frontmatter:{},regularPath:"/install/install-common-ingress.html",relativePath:"install/install-common-ingress.md",key:"v-61ad5b01",path:"/install/install-common-ingress.html",headers:[{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 apple-master-a-1 上执行",slug:"在-apple-master-a-1-上执行"},{level:3,title:"在IaaS云控制台完成如下配置(公网ELB)",slug:"在iaas云控制台完成如下配置(公网elb)"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"制作标准机镜像",frontmatter:{},regularPath:"/install/install-common-vm.html",relativePath:"install/install-common-vm.md",key:"v-4b91c5e7",path:"/install/install-common-vm.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"}]},{title:"安装 kuboard",frontmatter:{},regularPath:"/install/install-dashboard.html",relativePath:"install/install-dashboard.md",key:"v-c621d7f2",path:"/install/install-dashboard.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"兼容性",slug:"兼容性"},{level:2,title:"安装",slug:"安装"},{level:2,title:"获取 token",slug:"获取-token"},{level:3,title:"获取管理员用户 token",slug:"获取管理员用户-token"},{level:3,title:"获取只读用户的Token",slug:"获取只读用户的token"},{level:2,title:"访问 Kuboard",slug:"访问-kuboard"},{level:3,title:"通过域名访问",slug:"通过域名访问"},{level:3,title:"通过 NodePort 访问",slug:"通过-nodeport-访问"}]},{title:"在单机使用 kind 安装 Kubernetes",frontmatter:{},regularPath:"/install/install-kind.html",relativePath:"install/install-kind.md",key:"v-cfc76602",path:"/install/install-kind.html",headers:[{level:2,title:"环境简介",slug:"环境简介"},{level:3,title:"kind 简介与安装",slug:"kind-简介与安装"},{level:3,title:"docker 环境",slug:"docker-环境"},{level:3,title:"kubectl 安装",slug:"kubectl-安装"},{level:2,title:"k8s 集群搭建",slug:"k8s-集群搭建"},{level:3,title:"准备 kind 搭建集群配置文件 kind-config.yaml",slug:"准备-kind-搭建集群配置文件-kind-config-yaml"},{level:3,title:"使用 kind 搭建集群",slug:"使用-kind-搭建集群"},{level:3,title:"创建成功",slug:"创建成功"},{level:2,title:"kuboard 安装",slug:"kuboard-安装"},{level:3,title:"获取并修改 yaml 文件",slug:"获取并修改-yaml-文件"},{level:3,title:"执行安装",slug:"执行安装"},{level:3,title:"查看启动状态",slug:"查看启动状态"},{level:3,title:"访问 kuboard 页面",slug:"访问-kuboard-页面"}]},{title:"Kuboard",frontmatter:{},regularPath:"/overview/",relativePath:"overview/README.md",key:"v-7249b1a4",path:"/overview/",headers:[{level:2,title:"Kuboard",slug:"kuboard"},{level:2,title:"Demo",slug:"demo"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"在线提问",slug:"在线提问"}]},{title:"为什么选择 Kuboard",frontmatter:{},regularPath:"/overview/why-kuboard.html",relativePath:"overview/why-kuboard.md",key:"v-5566a571",path:"/overview/why-kuboard.html",headers:[{level:2,title:"为什么选择 Kuboard",slug:"为什么选择-kuboard"},{level:2,title:"Kubernetes 入门学习者",slug:"kubernetes-入门学习者"},{level:3,title:"集群概览",slug:"集群概览"},{level:3,title:"名称空间",slug:"名称空间"},{level:3,title:"无需手写 Yaml",slug:"无需手写-yaml"},{level:2,title:"Kubernetes 日常运维人员",slug:"kubernetes-日常运维人员"},{level:3,title:"纯图形界面运维 Kubernetes",slug:"纯图形界面运维-kubernetes"},{level:3,title:"多环境复制",slug:"多环境复制"},{level:3,title:"应用升级",slug:"应用升级"},{level:2,title:"0 侵入性",slug:"_0-侵入性"},{level:2,title:"更多资料",slug:"更多资料"}]},{title:"提交问题",frontmatter:{},regularPath:"/support/",relativePath:"support/README.md",key:"v-76626758",path:"/support/",headers:[{level:2,title:"提交问题",slug:"提交问题"},{level:2,title:"在线提问",slug:"在线提问"}]},{title:"导入 example 微服务",frontmatter:{},regularPath:"/guide/example/import.html",relativePath:"guide/example/import.md",key:"v-554543f9",path:"/guide/example/import.html",headers:[{level:2,title:"前提",slug:"前提"},{level:2,title:"创建存储资源",slug:"创建存储资源"},{level:2,title:"创建名称空间",slug:"创建名称空间"},{level:2,title:"导入 example",slug:"导入-example"},{level:2,title:"验证 web-example",slug:"验证-web-example"}]},{title:"安装 Kubernetes 用于测试",frontmatter:{},regularPath:"/install/install-k8s.html",relativePath:"install/install-k8s.md",key:"v-292f2847",path:"/install/install-k8s.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"},{level:2,title:"初始化 master 节点",slug:"初始化-master-节点"},{level:3,title:"在 demo-master-a-1 机器上执行",slug:"在-demo-master-a-1-机器上执行"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果"},{level:2,title:"初始化 worker节点",slug:"初始化-worker节点"},{level:3,title:"获得 join命令参数",slug:"获得-join命令参数"},{level:3,title:"初始化worker",slug:"初始化worker"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果-2"},{level:2,title:"移除 worker 节点",slug:"移除-worker-节点"},{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 demo-master-a-1 上执行",slug:"在-demo-master-a-1-上执行"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"安装 Kubernetes",frontmatter:{},regularPath:"/install/install-kubernetes.html",relativePath:"install/install-kubernetes.md",key:"v-3732859b",path:"/install/install-kubernetes.html",headers:[{level:2,title:"制作标准机镜像",slug:"制作标准机镜像"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装 nfs-utils",slug:"安装-nfs-utils"},{level:3,title:"K8S基本配置",slug:"k8s基本配置"},{level:2,title:"初始化API Server",slug:"初始化api-server"},{level:3,title:"创建 ApiServer 的 ELB(私网)",slug:"创建-apiserver-的-elb(私网)"},{level:3,title:"初始化第一个master节点",slug:"初始化第一个master节点"},{level:3,title:"初始化第二、三个master节点",slug:"初始化第二、三个master节点"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果"},{level:2,title:"初始化 worker节点",slug:"初始化-worker节点"},{level:3,title:"获得 join命令参数",slug:"获得-join命令参数"},{level:3,title:"初始化worker",slug:"初始化worker"},{level:3,title:"检查 apiserver初始化结果",slug:"检查-apiserver初始化结果-2"},{level:2,title:"移除 worker 节点",slug:"移除-worker-节点"},{level:2,title:"安装 Ingress Controller",slug:"安装-ingress-controller"},{level:3,title:"在 apple-master-a-1 上执行",slug:"在-apple-master-a-1-上执行"},{level:3,title:"在IaaS云控制台完成如下配置(公网ELB)",slug:"在iaas云控制台完成如下配置(公网elb)"},{level:3,title:"配置域名解析",slug:"配置域名解析"},{level:3,title:"验证配置",slug:"验证配置"}]},{title:"Kubernetes 入门",frontmatter:{},regularPath:"/overview/concepts.html",relativePath:"overview/concepts.md",key:"v-0393ebb2",path:"/overview/concepts.html",headers:[{level:2,title:"Kubernetes 学习门槛在哪儿",slug:"kubernetes-学习门槛在哪儿"},{level:2,title:"降低 Kubernetes 学习门槛",slug:"降低-kubernetes-学习门槛"},{level:2,title:"工作负载编辑器设计",slug:"工作负载编辑器设计"},{level:2,title:"工作负载编辑器介绍",slug:"工作负载编辑器介绍"},{level:3,title:"1. 基本信息",slug:"_1-基本信息"},{level:3,title:"2. 数据卷",slug:"_2-数据卷"},{level:3,title:"3. 身份信息",slug:"_3-身份信息"},{level:3,title:"4. 容器",slug:"_4-容器"},{level:3,title:"5. 访问方式",slug:"_5-访问方式"},{level:3,title:"6. 互联网入口",slug:"_6-互联网入口"}]}],themeConfig:{nav:[{text:"简介",link:"/overview/"},{text:"安装",link:"/install/"},{text:"使用",link:"/guide/"},{text:"支持",link:"/support/"}],displayAllHeaders:!1,sidebarDepth:2,serviceWorker:{updatePopup:!0},sidebar:{"/overview/":[["","简介"],["why-kuboard","为什么选择 Kuboard"],["concepts","如何降低K8S学习门槛"]],"/install/":["","install-k8s","install-kubernetes","install-dashboard"],"/guide/":[{title:"概述",collapsable:!1,children:[["","概述"]]},{title:"Example",collapsable:!1,children:["example/busybox","example/import","example/monitor"]},{title:"集群管理",collapsable:!1,children:["cluster/computing","cluster/storage","cluster/namespace"]},{title:"应用管理",collapsable:!1,children:["namespace/workload","namespace/secrets","namespace/configMap","namespace/pvc","namespace/adjustion","namespace/multi-env"]},{title:"问题诊断",collapsable:!1,children:["diagonize/events","diagonize/logs","diagonize/port-forward"]},{title:"监控套件 (alpha)",collapsable:!1,children:["monitor/","monitor/apis"]}],"/support/":[""]}}};n(5);Uo.component("Badge",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,358)));n(6);var Qa=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({router:e})=>{"undefined"!=typeof window&&(function(e,t,n,r,o,i,a){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,i=t.createElement(n),a=t.getElementsByTagName(n)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a)}(window,document,"script",0,"ga"),ga("create","UA-144196556-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),e.afterEach(function(e){ga("set","page",e.fullPath),ga("send","pageview")}))}],Za=[];class es{constructor(){this.store=new Uo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Uo.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}class ts extends es{}Object.assign(ts.prototype,{getPageAsyncComponent:Ra,getLayoutAsyncComponent:Ia,getAsyncComponent:Ma,getVueComponent:Da});var ns={install(e){const t=new ts;e.$vuepress=t,e.prototype.$vuepress=t}};function rs(e,t){return e.options.routes.filter(e=>e.path.toLowerCase()===t.toLowerCase()).length>0}var os={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return Ua("pageKey",t),Uo.component(t)||Uo.component(t,Ra(t)),e(t||"")}},is={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:[`content__${t.slotKey}`]},n()[t.slotKey])},as=(n(7),Object(Xa.a)({},function(e,t){var n=t._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),t._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])},[],!0,null,null,null).exports),ss={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Uo.config.productionTip=!1,Uo.use(ba),Uo.use(ns),Uo.mixin(function(e,t,n=Uo){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t}),Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>(class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||""}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Uo.$vuepress.$get("disableScrollBehavior")&&{selector:e.hash}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(rs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";rs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";rs(e,o)?r(o):rs(e,n)?r(n):r()}})}(n);const r={};try{Qa.forEach(t=>{"function"==typeof t&&t({Vue:Uo,options:r,router:n,siteData:Ya,isServer:e})})}catch(e){console.error(e)}return{app:new Uo(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("router-view",{ref:"layout"}),e("div",{class:"global-ui"},Za.map(t=>e(t)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.0.2",hash:"d87b6ef"},us.onReady(()=>{ls.$mount("#app")})}]); \ No newline at end of file diff --git a/docs/guide/cluster/computing.html b/docs/guide/cluster/computing.html index 3528a25..88441a7 100644 --- a/docs/guide/cluster/computing.html +++ b/docs/guide/cluster/computing.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

- + diff --git a/docs/guide/cluster/namespace.html b/docs/guide/cluster/namespace.html index 040024c..7f4c0e3 100644 --- a/docs/guide/cluster/namespace.html +++ b/docs/guide/cluster/namespace.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/cluster/storage.html b/docs/guide/cluster/storage.html index bb9f311..136ea85 100644 --- a/docs/guide/cluster/storage.html +++ b/docs/guide/cluster/storage.html @@ -7,7 +7,7 @@ - + @@ -22,6 +22,6 @@ sudo mount -t nfs -o vers=4,minorversion=0,noresvport - + diff --git a/docs/guide/diagonize/events.html b/docs/guide/diagonize/events.html index 707cd1d..04e6843 100644 --- a/docs/guide/diagonize/events.html +++ b/docs/guide/diagonize/events.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/diagonize/logs.html b/docs/guide/diagonize/logs.html index 52043a4..72ea22f 100644 --- a/docs/guide/diagonize/logs.html +++ b/docs/guide/diagonize/logs.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/diagonize/port-forward.html b/docs/guide/diagonize/port-forward.html index 00f90a9..974f46c 100644 --- a/docs/guide/diagonize/port-forward.html +++ b/docs/guide/diagonize/port-forward.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/example/busybox.html b/docs/guide/example/busybox.html index 6743230..5eadedb 100644 --- a/docs/guide/example/busybox.html +++ b/docs/guide/example/busybox.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/example/import.html b/docs/guide/example/import.html index 79fccc7..6e4fc56 100644 --- a/docs/guide/example/import.html +++ b/docs/guide/example/import.html @@ -7,7 +7,7 @@ - + @@ -53,6 +53,6 @@ com.netflix.discovery.shared.transport.TransportException: Cannot execute reques →

- + diff --git a/docs/guide/example/monitor.html b/docs/guide/example/monitor.html index 84ffabf..aa7c304 100644 --- a/docs/guide/example/monitor.html +++ b/docs/guide/example/monitor.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

- + diff --git a/docs/guide/index.html b/docs/guide/index.html index ee08d7f..2458c6b 100644 --- a/docs/guide/index.html +++ b/docs/guide/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@ →

- + diff --git a/docs/guide/monitor/apis.html b/docs/guide/monitor/apis.html index 3d02901..27675f7 100644 --- a/docs/guide/monitor/apis.html +++ b/docs/guide/monitor/apis.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

- + diff --git a/docs/guide/monitor/index.html b/docs/guide/monitor/index.html index b7dc5ca..982f153 100644 --- a/docs/guide/monitor/index.html +++ b/docs/guide/monitor/index.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/namespace/adjustion.html b/docs/guide/namespace/adjustion.html index 611d869..d3a31ee 100644 --- a/docs/guide/namespace/adjustion.html +++ b/docs/guide/namespace/adjustion.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

- + diff --git a/docs/guide/namespace/configMap.html b/docs/guide/namespace/configMap.html index d820753..01a1e6c 100644 --- a/docs/guide/namespace/configMap.html +++ b/docs/guide/namespace/configMap.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/namespace/index.html b/docs/guide/namespace/index.html index d7a2022..ba0814b 100644 --- a/docs/guide/namespace/index.html +++ b/docs/guide/namespace/index.html @@ -7,11 +7,11 @@ - + - + diff --git a/docs/guide/namespace/multi-env.html b/docs/guide/namespace/multi-env.html index 28b5894..1ac6288 100644 --- a/docs/guide/namespace/multi-env.html +++ b/docs/guide/namespace/multi-env.html @@ -7,7 +7,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/guide/namespace/pvc.html b/docs/guide/namespace/pvc.html index 71e4134..47445bd 100644 --- a/docs/guide/namespace/pvc.html +++ b/docs/guide/namespace/pvc.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/namespace/secrets.html b/docs/guide/namespace/secrets.html index 5facca5..dc4243c 100644 --- a/docs/guide/namespace/secrets.html +++ b/docs/guide/namespace/secrets.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/guide/namespace/workload.html b/docs/guide/namespace/workload.html index f19b762..1a1c0b2 100644 --- a/docs/guide/namespace/workload.html +++ b/docs/guide/namespace/workload.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/index.html b/docs/index.html index 9081ccc..6750c98 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

Get Started →

降低 Kubernetes 门槛

创建工作负载,导出/导入配置,批量调整镜像版本,问题诊断

直观显示微服务架构

展现层/网关层/服务层/持久层/中间件层/监控层

上下文关联监控

资源层监控/中间件层监控/链路层监控

- + diff --git a/docs/install/index.html b/docs/install/index.html index 8d56263..71c0442 100644 --- a/docs/install/index.html +++ b/docs/install/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@ →

- + diff --git a/docs/install/install-common-ingress.html b/docs/install/install-common-ingress.html index 050e5aa..49fad1c 100644 --- a/docs/install/install-common-ingress.html +++ b/docs/install/install-common-ingress.html @@ -7,13 +7,13 @@ - +

安装 Ingress Controller

ingress官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/

Ingress Controllers官网介绍:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge

kubernetes支持多种Ingress Controllers,本文推荐使用

https://github.com/nginxinc/kubernetes-ingress

在 apple-master-a-1 上执行

su - gitlab-runner
 kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml
 

在IaaS云控制台完成如下配置(公网ELB

创建负载均衡 ELB:

​ 监听器 1:80 / TCP, SOURCE_ADDRESS 会话保持

​ 服务器资源池 1: apple-worker-x-x 的所有节点的 80端口

​ 监听器 2:443 / TCP, SOURCE_ADDRESS 会话保持

​ 服务器资源池 2: apple-worker-x-x 的所有节点的443端口

假设刚创建的负载均衡 ELB 的 IP 地址为: z.z.z.z

配置域名解析

将域名 *.apple.yourdomain.com 解析到地址负载均衡服务器 的 IP 地址 z.z.z.z

验证配置

在浏览器访问 a.apple.yourdomain.com,将得到 404 NotFound 错误页面

- + diff --git a/docs/install/install-common-vm.html b/docs/install/install-common-vm.html index dc3af34..387ec51 100644 --- a/docs/install/install-common-vm.html +++ b/docs/install/install-common-vm.html @@ -7,7 +7,7 @@ - + @@ -70,6 +70,6 @@ docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1 docker tag eb516548c180 k8s.gcr.io/coredns:1.3.1 docker tag 2c4adeb21b4f k8s.gcr.io/etcd:3.3.10

制作镜像

请参考阿里云基于ECS 制作虚拟机镜像 的文档

- + diff --git a/docs/install/install-dashboard.html b/docs/install/install-dashboard.html index f2c3f9d..6668e6e 100644 --- a/docs/install/install-dashboard.html +++ b/docs/install/install-dashboard.html @@ -7,7 +7,7 @@ - + @@ -34,6 +34,6 @@ token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2Nv

- + diff --git a/docs/install/install-k8s.html b/docs/install/install-k8s.html index 20037cc..3b767dd 100644 --- a/docs/install/install-k8s.html +++ b/docs/install/install-k8s.html @@ -7,7 +7,7 @@ - + @@ -101,6 +101,6 @@ kubeadm join apiserver.demo:6443 --token mpf →

- + diff --git a/docs/install/install-kind.html b/docs/install/install-kind.html index ca489d3..5f1f93d 100644 --- a/docs/install/install-kind.html +++ b/docs/install/install-kind.html @@ -7,7 +7,7 @@ - + @@ -37,6 +37,6 @@ sudo mv ./kubectl /usr/local/bin/kubectl

等待 kuboard 启动成功

访问 kuboard 页面

待启动成功后,需要做 80 端口转发,通过浏览器访问 kuboard

kubectl port-forward service/kuboard 9080:80 -n kube-system
 

获取登录 token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')   
 

1563698644736

浏览器中访问 http://localhost:9080

1563698714557

将获取的 token 复制到浏览器中,访问成功

1563698865448

- + diff --git a/docs/install/install-kubernetes.html b/docs/install/install-kubernetes.html index 4bf326c..871ec11 100644 --- a/docs/install/install-kubernetes.html +++ b/docs/install/install-kubernetes.html @@ -7,7 +7,7 @@ - + @@ -119,6 +119,6 @@ kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-reposito →

- + diff --git a/docs/overview/concepts.html b/docs/overview/concepts.html index f77bd21..e574528 100644 --- a/docs/overview/concepts.html +++ b/docs/overview/concepts.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

- + diff --git a/docs/overview/index.html b/docs/overview/index.html index cc1ef0a..633470a 100644 --- a/docs/overview/index.html +++ b/docs/overview/index.html @@ -7,7 +7,7 @@ - + @@ -17,6 +17,6 @@ →

- + diff --git a/docs/overview/why-kuboard.html b/docs/overview/why-kuboard.html index dfd89e8..d5a832f 100644 --- a/docs/overview/why-kuboard.html +++ b/docs/overview/why-kuboard.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/support/index.html b/docs/support/index.html index 4803962..356dd8b 100644 --- a/docs/support/index.html +++ b/docs/support/index.html @@ -7,11 +7,11 @@ - +

提交问题

提交 BUG 后,通常会在第二天得到 Kuboard 作者的答复。

在线提问

QQ 群

kuboard_qq

- +