diff --git a/.vuepress/public/.nojekyll b/.nojekyll similarity index 100% rename from .vuepress/public/.nojekyll rename to .nojekyll diff --git a/.vuepress/public/CNAME b/CNAME similarity index 100% rename from .vuepress/public/CNAME rename to CNAME diff --git a/deploy.sh b/deploy.sh index 43e5002..3241f55 100755 --- a/deploy.sh +++ b/deploy.sh @@ -11,7 +11,6 @@ npm run docs:build # if you are deploying to a custom domain # echo 'www.example.com' > CNAME -git init git add -A git commit -m 'deploy' @@ -20,5 +19,3 @@ git commit -m 'deploy' # if you are deploying to https://.github.io/ git push -f git@github.com:eip-work/kuboard-press.git master - -cd - \ No newline at end of file diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/404.html b/docs/404.html index 4a79b07..da93bd3 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,11 +7,11 @@ - + -

404

How did we get here?
Take me home.
- +

404

That's a Four-Oh-Four.
Take me home.
+ diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 5565f60..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -eip.work \ No newline at end of file diff --git a/docs/assets/js/14.85fae375.js b/docs/assets/js/14.c7f5522a.js similarity index 80% rename from docs/assets/js/14.85fae375.js rename to docs/assets/js/14.c7f5522a.js index fa9682b..2d1383c 100644 --- a/docs/assets/js/14.85fae375.js +++ b/docs/assets/js/14.c7f5522a.js @@ -1 +1 @@ -(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 +(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 diff --git a/docs/assets/js/17.8dafc36c.js b/docs/assets/js/17.96da28ec.js similarity index 94% rename from docs/assets/js/17.8dafc36c.js rename to docs/assets/js/17.96da28ec.js index 6af5c72..f2478ad 100644 --- a/docs/assets/js/17.8dafc36c.js +++ b/docs/assets/js/17.96da28ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{29:function(e,r,a){e.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},295:function(e,r,a){e.exports=a.p+"assets/img/image-20190721154650916.3f63fdcb.jpg"},296:function(e,r,a){e.exports=a.p+"assets/img/image-20190723105039358.91eef75a.png"},297:function(e,r,a){e.exports=a.p+"assets/img/image-20190721000759925.bb32a332.png"},331:function(e,r,a){"use strict";a.r(r);var t=a(0),s=Object(t.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"为什么选择-kuboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么选择-kuboard","aria-hidden":"true"}},[e._v("#")]),e._v(" 为什么选择 Kuboard")]),e._v(" "),t("p",[e._v("Kubernetes 已然是当下容器编排领域事实上的标准,各大云服务商都急于推出 Kubernetes 服务,互联网公司也纷纷跟进,将自己的应用容器化,并使用 Kubernetes 编排。")]),e._v(" "),t("p",[e._v("在 Kubernetes 图形化工具方面,我们已经获得了极大的可选择空间:")]),e._v(" "),t("ul",[t("li",[e._v("各云服务商自己推出的 Kubernetes 服务所搭载的管理控制台,例如 阿里云的 Kubernetes 服务,青云推出的 KubeSphere,其他云服务商的 CaaS 类服务")]),e._v(" "),t("li",[e._v("Kubernetes 官方的图形管理界面 Kubernetes Dashboard")]),e._v(" "),t("li",[e._v("面向企业私有化部署的 Rancher")])]),e._v(" "),t("p",[e._v("什么场景下更适合选择 Kuboard 呢?")]),e._v(" "),t("h2",{attrs:{id:"kubernetes-入门学习者"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-入门学习者","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 入门学习者")]),e._v(" "),t("p",[e._v("​\tKuboard类似于 Kubernetes Dashboard,是一款轻量级产品,按照 Kuboard 的文档,您可以很快地搭建一套学习 Kubernetes 用的集群环境,您也可以在自己已经有的集群上轻易地完成 Kuboard 的安装。")]),e._v(" "),t("p",[e._v("​\t对于 K8S 入门学习者来说,看了那么多 Kubernetes 文章,了解了许多的跟 apiserver、etcd、pod、container、service、ingress、storage class等各种概念,都不如比不上自己动手搭一套 K8S 环境,并在其上部署一套微服务应用的效果好。Kuboard 完全采用场景化的设计,操作过程更适合人们的思考方式。例如,集群概览的展示方式、名称空间的展示方式。")]),e._v(" "),t("h3",{attrs:{id:"集群概览"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群概览","aria-hidden":"true"}},[e._v("#")]),e._v(" 集群概览")]),e._v(" "),t("p",[e._v("在 Kuboard 中,集群概览的展现形式如下:")]),e._v(" "),t("p",[e._v("​\t计算资源、存储资源并列在集群概览的下层,上层则是运行于计算资源与存储资源上的名称空间(应用)。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(75),alt:"集群概览"}})]),e._v(" "),t("h3",{attrs:{id:"名称空间"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#名称空间","aria-hidden":"true"}},[e._v("#")]),e._v(" 名称空间")]),e._v(" "),t("p",[e._v("在 Kuboard 中,名称空间的展示形式如下:")]),e._v(" "),t("p",[e._v("​\t以微服务参考分层架构的形式,将所有的微服务分为如下几层:")]),e._v(" "),t("ul",[t("li",[e._v("展现层\n"),t("ul",[t("li",[e._v("终端用户访问的 Web 应用")])])]),e._v(" "),t("li",[e._v("API网关层\n"),t("ul",[t("li",[e._v("Spring Cloud Gateway / Zuul /Kong 等接口网关")])])]),e._v(" "),t("li",[e._v("微服务层\n"),t("ul",[t("li",[e._v("Spring Boot 微服务,或 PHP / Python 实现的微服务")])])]),e._v(" "),t("li",[e._v("持久层\n"),t("ul",[t("li",[e._v("MySQL 数据库等(开发及测试环境里,将MySQL部署于 Kubernetes 可以极大地降低环境维护的任务量)")])])]),e._v(" "),t("li",[e._v("中间件层\n"),t("ul",[t("li",[e._v("消息队列")]),e._v(" "),t("li",[e._v("服务注册 Eureka / Zookeeper / Consul 等")])])]),e._v(" "),t("li",[e._v("监控层\n"),t("ul",[t("li",[e._v("Prometheus + Grafana")]),e._v(" "),t("li",[e._v("Pinpooint 等")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(295),alt:"image-20190721154650916"}})]),e._v(" "),t("p",[e._v("​\t更为贴心的,当某一个工作负载存在部署方面的问题时, Kuboard 将以红色高亮出该工作负载,并配有合适的方式辅助用户定位错误信息。")]),e._v(" "),t("h3",{attrs:{id:"无需手写-yaml"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#无需手写-yaml","aria-hidden":"true"}},[e._v("#")]),e._v(" 无需手写 Yaml")]),e._v(" "),t("p",[e._v("​\t学习 Kubernetes 时,需要花费许多的时间,在理解一个概念之后,模仿着写一个 yaml 文件,再使用 kubectl 应用该文件。")]),e._v(" "),t("p",[e._v("​\t使用 Kuboard 提供的工作负载编辑器,可以直观的完成应用的部署")]),e._v(" "),t("p",[t("img",{attrs:{src:a(296),alt:"image-20190723105039358"}})]),e._v(" "),t("h2",{attrs:{id:"kubernetes-日常运维人员"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-日常运维人员","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 日常运维人员")]),e._v(" "),t("p",[e._v("​\tkubectl 的命令敲了许多遍了?yaml 文件越来越多,结构越来越复杂?又要部署一套测试环境,用来进行 UAT 测试?")]),e._v(" "),t("h3",{attrs:{id:"纯图形界面运维-kubernetes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#纯图形界面运维-kubernetes","aria-hidden":"true"}},[e._v("#")]),e._v(" 纯图形界面运维 Kubernetes")]),e._v(" "),t("p",[e._v("在作者的日常运维工作中,除了 kubectl port-forward 还需要回到命令行界面以外,其他运维任务已经全部在 Kuboard 中轻松完成。更让人期待的是,Kuboard 作者还计划实现 port-forward 的功能,如此一来,作者日后就完全不再需要使用 kubectl 了。")]),e._v(" "),t("h3",{attrs:{id:"多环境复制"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#多环境复制","aria-hidden":"true"}},[e._v("#")]),e._v(" 多环境复制")]),e._v(" "),t("p",[e._v("为了能够是你的一套 yaml 文件适应多种部署(开发环境、测试环境、UAT环境、生产环境),您一定尝试过各种办法,例如 helmer chart, kustomize, kubectl apply -k directory_name,但是您本来可以更轻松地完成这样的任务的。")]),e._v(" "),t("p",[e._v("Kuboard 提供了 工作负载导出和导入的功能,0 yaml文件,轻松复制多个环境。")]),e._v(" "),t("h3",{attrs:{id:"应用升级"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#应用升级","aria-hidden":"true"}},[e._v("#")]),e._v(" 应用升级")]),e._v(" "),t("p",[e._v("Kuboard 提供批量修改容器镜像版本的功能,轻松升级应用程序的版本。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(297),alt:"image-20190721000759925"}})]),e._v(" "),t("h2",{attrs:{id:"_0-侵入性"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_0-侵入性","aria-hidden":"true"}},[e._v("#")]),e._v(" 0 侵入性")]),e._v(" "),t("p",[e._v("​\tRancher 为了支持多云管理(MeSos,Docker Swarm,Kubernetes等),引入了一系列复杂的概念,又需要新增安装 Rancher Server、Rancher Agent等,本来学习 Kubernetes 已然不堪重负,Rancher再把多云整合到一起来,无疑又增加了学习和使用的复杂性。如果您只是打算使用 Kubernetes 的话,也许并不需要选择 Rancher 这样重量级的产品。Kuboard 仅仅依赖于原生 Kubernetes,可以运行在各种公有云、私有云上,您也可以自己基于物理机、vsphere、vmware等已经有的基础设施搭建 Kubernetes,轻松实现现有 Infrastructure 的容器化改造。")]),e._v(" "),t("h2",{attrs:{id:"更多资料"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#更多资料","aria-hidden":"true"}},[e._v("#")]),e._v(" 更多资料")]),e._v(" "),t("p",[e._v("Kuboard 官网 http://kuboard.cn")]),e._v(" "),t("p",[e._v("Kuboard QQ 群")]),e._v(" "),t("p",[t("img",{attrs:{src:a(29),alt:"Kuboard QQ 群"}})])])},[],!1,null,null,null);r.default=s.exports},75:function(e,r,a){e.exports=a.p+"assets/img/image-20190716234146419.bd87cdff.png"}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{29:function(e,r,a){e.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},294:function(e,r,a){e.exports=a.p+"assets/img/image-20190721154650916.3f63fdcb.jpg"},295:function(e,r,a){e.exports=a.p+"assets/img/image-20190723105039358.91eef75a.png"},296:function(e,r,a){e.exports=a.p+"assets/img/image-20190721000759925.bb32a332.png"},332:function(e,r,a){"use strict";a.r(r);var t=a(0),s=Object(t.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"为什么选择-kuboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么选择-kuboard","aria-hidden":"true"}},[e._v("#")]),e._v(" 为什么选择 Kuboard")]),e._v(" "),t("p",[e._v("Kubernetes 已然是当下容器编排领域事实上的标准,各大云服务商都急于推出 Kubernetes 服务,互联网公司也纷纷跟进,将自己的应用容器化,并使用 Kubernetes 编排。")]),e._v(" "),t("p",[e._v("在 Kubernetes 图形化工具方面,我们已经获得了极大的可选择空间:")]),e._v(" "),t("ul",[t("li",[e._v("各云服务商自己推出的 Kubernetes 服务所搭载的管理控制台,例如 阿里云的 Kubernetes 服务,青云推出的 KubeSphere,其他云服务商的 CaaS 类服务")]),e._v(" "),t("li",[e._v("Kubernetes 官方的图形管理界面 Kubernetes Dashboard")]),e._v(" "),t("li",[e._v("面向企业私有化部署的 Rancher")])]),e._v(" "),t("p",[e._v("什么场景下更适合选择 Kuboard 呢?")]),e._v(" "),t("h2",{attrs:{id:"kubernetes-入门学习者"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-入门学习者","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 入门学习者")]),e._v(" "),t("p",[e._v("​\tKuboard类似于 Kubernetes Dashboard,是一款轻量级产品,按照 Kuboard 的文档,您可以很快地搭建一套学习 Kubernetes 用的集群环境,您也可以在自己已经有的集群上轻易地完成 Kuboard 的安装。")]),e._v(" "),t("p",[e._v("​\t对于 K8S 入门学习者来说,看了那么多 Kubernetes 文章,了解了许多的跟 apiserver、etcd、pod、container、service、ingress、storage class等各种概念,都不如比不上自己动手搭一套 K8S 环境,并在其上部署一套微服务应用的效果好。Kuboard 完全采用场景化的设计,操作过程更适合人们的思考方式。例如,集群概览的展示方式、名称空间的展示方式。")]),e._v(" "),t("h3",{attrs:{id:"集群概览"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群概览","aria-hidden":"true"}},[e._v("#")]),e._v(" 集群概览")]),e._v(" "),t("p",[e._v("在 Kuboard 中,集群概览的展现形式如下:")]),e._v(" "),t("p",[e._v("​\t计算资源、存储资源并列在集群概览的下层,上层则是运行于计算资源与存储资源上的名称空间(应用)。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(75),alt:"集群概览"}})]),e._v(" "),t("h3",{attrs:{id:"名称空间"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#名称空间","aria-hidden":"true"}},[e._v("#")]),e._v(" 名称空间")]),e._v(" "),t("p",[e._v("在 Kuboard 中,名称空间的展示形式如下:")]),e._v(" "),t("p",[e._v("​\t以微服务参考分层架构的形式,将所有的微服务分为如下几层:")]),e._v(" "),t("ul",[t("li",[e._v("展现层\n"),t("ul",[t("li",[e._v("终端用户访问的 Web 应用")])])]),e._v(" "),t("li",[e._v("API网关层\n"),t("ul",[t("li",[e._v("Spring Cloud Gateway / Zuul /Kong 等接口网关")])])]),e._v(" "),t("li",[e._v("微服务层\n"),t("ul",[t("li",[e._v("Spring Boot 微服务,或 PHP / Python 实现的微服务")])])]),e._v(" "),t("li",[e._v("持久层\n"),t("ul",[t("li",[e._v("MySQL 数据库等(开发及测试环境里,将MySQL部署于 Kubernetes 可以极大地降低环境维护的任务量)")])])]),e._v(" "),t("li",[e._v("中间件层\n"),t("ul",[t("li",[e._v("消息队列")]),e._v(" "),t("li",[e._v("服务注册 Eureka / Zookeeper / Consul 等")])])]),e._v(" "),t("li",[e._v("监控层\n"),t("ul",[t("li",[e._v("Prometheus + Grafana")]),e._v(" "),t("li",[e._v("Pinpooint 等")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(294),alt:"image-20190721154650916"}})]),e._v(" "),t("p",[e._v("​\t更为贴心的,当某一个工作负载存在部署方面的问题时, Kuboard 将以红色高亮出该工作负载,并配有合适的方式辅助用户定位错误信息。")]),e._v(" "),t("h3",{attrs:{id:"无需手写-yaml"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#无需手写-yaml","aria-hidden":"true"}},[e._v("#")]),e._v(" 无需手写 Yaml")]),e._v(" "),t("p",[e._v("​\t学习 Kubernetes 时,需要花费许多的时间,在理解一个概念之后,模仿着写一个 yaml 文件,再使用 kubectl 应用该文件。")]),e._v(" "),t("p",[e._v("​\t使用 Kuboard 提供的工作负载编辑器,可以直观的完成应用的部署")]),e._v(" "),t("p",[t("img",{attrs:{src:a(295),alt:"image-20190723105039358"}})]),e._v(" "),t("h2",{attrs:{id:"kubernetes-日常运维人员"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-日常运维人员","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 日常运维人员")]),e._v(" "),t("p",[e._v("​\tkubectl 的命令敲了许多遍了?yaml 文件越来越多,结构越来越复杂?又要部署一套测试环境,用来进行 UAT 测试?")]),e._v(" "),t("h3",{attrs:{id:"纯图形界面运维-kubernetes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#纯图形界面运维-kubernetes","aria-hidden":"true"}},[e._v("#")]),e._v(" 纯图形界面运维 Kubernetes")]),e._v(" "),t("p",[e._v("在作者的日常运维工作中,除了 kubectl port-forward 还需要回到命令行界面以外,其他运维任务已经全部在 Kuboard 中轻松完成。更让人期待的是,Kuboard 作者还计划实现 port-forward 的功能,如此一来,作者日后就完全不再需要使用 kubectl 了。")]),e._v(" "),t("h3",{attrs:{id:"多环境复制"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#多环境复制","aria-hidden":"true"}},[e._v("#")]),e._v(" 多环境复制")]),e._v(" "),t("p",[e._v("为了能够是你的一套 yaml 文件适应多种部署(开发环境、测试环境、UAT环境、生产环境),您一定尝试过各种办法,例如 helmer chart, kustomize, kubectl apply -k directory_name,但是您本来可以更轻松地完成这样的任务的。")]),e._v(" "),t("p",[e._v("Kuboard 提供了 工作负载导出和导入的功能,0 yaml文件,轻松复制多个环境。")]),e._v(" "),t("h3",{attrs:{id:"应用升级"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#应用升级","aria-hidden":"true"}},[e._v("#")]),e._v(" 应用升级")]),e._v(" "),t("p",[e._v("Kuboard 提供批量修改容器镜像版本的功能,轻松升级应用程序的版本。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(296),alt:"image-20190721000759925"}})]),e._v(" "),t("h2",{attrs:{id:"_0-侵入性"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_0-侵入性","aria-hidden":"true"}},[e._v("#")]),e._v(" 0 侵入性")]),e._v(" "),t("p",[e._v("​\tRancher 为了支持多云管理(MeSos,Docker Swarm,Kubernetes等),引入了一系列复杂的概念,又需要新增安装 Rancher Server、Rancher Agent等,本来学习 Kubernetes 已然不堪重负,Rancher再把多云整合到一起来,无疑又增加了学习和使用的复杂性。如果您只是打算使用 Kubernetes 的话,也许并不需要选择 Rancher 这样重量级的产品。Kuboard 仅仅依赖于原生 Kubernetes,可以运行在各种公有云、私有云上,您也可以自己基于物理机、vsphere、vmware等已经有的基础设施搭建 Kubernetes,轻松实现现有 Infrastructure 的容器化改造。")]),e._v(" "),t("h2",{attrs:{id:"更多资料"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#更多资料","aria-hidden":"true"}},[e._v("#")]),e._v(" 更多资料")]),e._v(" "),t("p",[e._v("Kuboard 官网 http://kuboard.cn")]),e._v(" "),t("p",[e._v("Kuboard QQ 群")]),e._v(" "),t("p",[t("img",{attrs:{src:a(29),alt:"Kuboard QQ 群"}})])])},[],!1,null,null,null);r.default=s.exports},75:function(e,r,a){e.exports=a.p+"assets/img/image-20190716234146419.bd87cdff.png"}}]); \ No newline at end of file diff --git a/docs/assets/js/26.bcfed686.js b/docs/assets/js/26.b307ad0f.js similarity index 81% rename from docs/assets/js/26.bcfed686.js rename to docs/assets/js/26.b307ad0f.js index 67281f8..6e4297a 100644 --- a/docs/assets/js/26.bcfed686.js +++ b/docs/assets/js/26.b307ad0f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{294:function(t,r,a){t.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},332:function(t,r,a){"use strict";a.r(r);var e=a(0),s=Object(e.a)({},function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"提交问题"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#提交问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 提交问题")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/shaohq/kuboard-issues/issues",target:"_blank",rel:"noopener noreferrer"}},[t._v("提交 BUG"),e("OutboundLink")],1),t._v(" 后,通常会在第二天得到 Kuboard 作者的答复。")]),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("QQ 群")]),t._v(" "),e("p",[e("img",{attrs:{src:a(294),alt:"kuboard_qq"}})])])},[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{297:function(t,r,a){t.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},331:function(t,r,a){"use strict";a.r(r);var e=a(0),s=Object(e.a)({},function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"提交问题"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#提交问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 提交问题")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/shaohq/kuboard-issues/issues",target:"_blank",rel:"noopener noreferrer"}},[t._v("提交 BUG"),e("OutboundLink")],1),t._v(" 后,通常会在第二天得到 Kuboard 作者的答复。")]),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("QQ 群")]),t._v(" "),e("p",[e("img",{attrs:{src:a(297),alt:"kuboard_qq"}})])])},[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/9.43663f9d.js b/docs/assets/js/9.7f90671a.js similarity index 85% rename from docs/assets/js/9.43663f9d.js rename to docs/assets/js/9.7f90671a.js index 49c9f88..fc45be2 100644 --- a/docs/assets/js/9.43663f9d.js +++ b/docs/assets/js/9.7f90671a.js @@ -1 +1 @@ -(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 +(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 diff --git a/docs/assets/js/app.f91cf1c4.js b/docs/assets/js/app.1817bcf6.js similarity index 97% rename from docs/assets/js/app.f91cf1c4.js rename to docs/assets/js/app.1817bcf6.js index 357a139..ec509fc 100644 --- a/docs/assets/js/app.f91cf1c4.js +++ b/docs/assets/js/app.1817bcf6.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-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-76626758":()=>n.e(26).then(n.bind(null,332)),"v-5566a571":()=>n.e(17).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-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-76626758",path:"/support/",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-76626758").then(n)}},{path:"/support/index.html",redirect:"/support/"},{name:"v-5566a571",path:"/overview/why-kuboard.html",component:Ga,beforeEnter:(e,t,n)=>{Na("Layout","v-5566a571").then(n)}},{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:"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:"提交问题",frontmatter:{},regularPath:"/support/",relativePath:"support/README.md",key:"v-76626758",path:"/support/",headers:[{level:2,title:"提交问题",slug:"提交问题"},{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:"导入 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:"97d1972"},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-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 diff --git a/docs/guide/cluster/computing.html b/docs/guide/cluster/computing.html index 085e204..3528a25 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 f84faa7..040024c 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 810389e..bb9f311 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 415f76b..707cd1d 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 cee95b7..52043a4 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 09b1417..00f90a9 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 0cadc51..6743230 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 0cefdf8..79fccc7 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 4aec8dd..84ffabf 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 2692e12..ee08d7f 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 c12880c..3d02901 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 ed80489..b7dc5ca 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 cc6e77f..611d869 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 1c00952..d820753 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 8aea2e5..d7a2022 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 4b4c35d..28b5894 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 955ac32..71e4134 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 8042bf9..5facca5 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 b428e4d..f19b762 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 e6c49f5..9081ccc 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 1f19445..8d56263 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 8b733af..050e5aa 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 7423927..dc3af34 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 86a3990..f2c3f9d 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 72d3325..20037cc 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 377341c..ca489d3 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 7380b6e..4bf326c 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 d905630..f77bd21 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 8f9deae..cc1ef0a 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 da975ac..dfd89e8 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 2958ac5..4803962 100644 --- a/docs/support/index.html +++ b/docs/support/index.html @@ -7,11 +7,11 @@ - +

提交问题

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

在线提问

QQ 群

kuboard_qq

- +