diff --git a/.gitignore b/.gitignore
index 354b059..8a536f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,4 +29,5 @@ HELP.md
.vscode/
/node_modules/
-/.vuepress/dist/
\ No newline at end of file
+/.vuepress/dist/
+/docs/
\ No newline at end of file
diff --git a/.vuepress/theme/layouts/Layout.vue b/.vuepress/theme/layouts/Layout.vue
index c2d9d38..9e88b11 100644
--- a/.vuepress/theme/layouts/Layout.vue
+++ b/.vuepress/theme/layouts/Layout.vue
@@ -6,7 +6,7 @@
简介
使用
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..497f0cc
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,14 @@
+FROM nginx:1.17.1
+
+COPY docker/entrypoint.sh /entrypoint.sh
+RUN rm -f /etc/nginx/nginx.conf \
+ && rm -f /etc/nginx/conf.d/default.conf
+COPY docker/nginx.80.conf /etc/nginx/conf.d/nginx.80.conf
+COPY docker/nginx.conf /etc/nginx/nginx.conf
+LABEL maintainer="shaohq@foxmail.com"
+
+EXPOSE 80
+
+COPY ./docs /usr/share/nginx/html
+
+ENTRYPOINT ["nginx", "-g", "daemon off;"]
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..ed71c3d
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+datetime=`date +%Y%m%d-%H%M%S`
+echo $datetime
+tag=eipwork/kuboard-press
+
+npm install --registry=https://registry.npm.taobao.org
+npm run docs:build
+
+docker build -t $tag:latest .
+
+
+if test $datetime != ""; then
+ docker push $tag:latest
+ docker tag $tag:latest $tag:$datetime
+ docker push $tag:$datetime
+fi
diff --git a/docker/dnsmasq.conf b/docker/dnsmasq.conf
new file mode 100644
index 0000000..5202c67
--- /dev/null
+++ b/docker/dnsmasq.conf
@@ -0,0 +1 @@
+user=root
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100755
index 0000000..67fc82e
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+echo "start dnsmasq"
+service dnsmasq start
+echo ${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}
+sed -i s/KUBERNETES_SERVICE_HOST/${KUBERNETES_SERVICE_HOST}/g /etc/nginx/conf.d/nginx.80.conf
+sed -i s/KUBERNETES_SERVICE_PORT_HTTPS/${KUBERNETES_SERVICE_PORT_HTTPS}/g /etc/nginx/conf.d/nginx.80.conf
+echo "start nginx"
+nginx -g "daemon off;"
\ No newline at end of file
diff --git a/docker/nginx.80.conf b/docker/nginx.80.conf
new file mode 100644
index 0000000..497251f
--- /dev/null
+++ b/docker/nginx.80.conf
@@ -0,0 +1,13 @@
+server {
+ listen 80;
+
+ location / {
+ root /usr/share/nginx/html;
+ index index.html index.htm;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location /50x.html {
+ root /usr/share/nginx/html;
+ }
+}
diff --git a/docker/nginx.conf b/docker/nginx.conf
new file mode 100644
index 0000000..f27d914
--- /dev/null
+++ b/docker/nginx.conf
@@ -0,0 +1,38 @@
+user root;
+worker_processes 1;
+
+error_log /var/log/nginx/error.log warn;
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+
+ keepalive_timeout 65;
+
+ client_header_buffer_size 16k;
+ large_client_header_buffers 4 16k;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_comp_level 9;
+ gzip_types text/plain application/json application/javascript application/x-javascript text/css application/xml text/javascript;
+ gzip_vary off;
+ gzip_disable "MSIE [1-6]\.";
+
+ include /etc/nginx/conf.d/*.conf;
+}
\ 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
deleted file mode 100644
index e9bd49a..0000000
--- a/docs/404.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
Kuboard
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/CNAME b/docs/CNAME
deleted file mode 100644
index e0429f7..0000000
--- a/docs/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-kuboard.cn
\ No newline at end of file
diff --git a/docs/assets/css/0.styles.10e5d9a9.css b/docs/assets/css/0.styles.10e5d9a9.css
deleted file mode 100644
index dc09a35..0000000
--- a/docs/assets/css/0.styles.10e5d9a9.css
+++ /dev/null
@@ -1 +0,0 @@
-#nprogress{pointer-events:none}#nprogress .bar{background:#007af5;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #007af5,0 0 5px #007af5;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#007af5 transparent transparent #007af5;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.go-to-top[data-v-67a9666a]{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;color:#007af5;z-index:1}.go-to-top[data-v-67a9666a]:hover{color:#45a2ff}@media (max-width:959px){.go-to-top[data-v-67a9666a]{display:none}}.fade-enter-active[data-v-67a9666a],.fade-leave-active[data-v-67a9666a]{transition:opacity .3s}.fade-enter[data-v-67a9666a],.fade-leave-to[data-v-67a9666a]{opacity:0}.reading-progress[data-v-7681808f]{position:fixed;z-index:1000;background:transparent;overflow:hidden}.reading-progress .progress[data-v-7681808f]{width:100%;height:100%;background:#007af5;background-image:none;transition:transform .2s ease-out}.top[data-v-7681808f]{top:0;left:0;right:0;width:100%;height:3px}.bottom[data-v-7681808f]{bottom:0;left:0;right:0;width:100%;height:3px}.left[data-v-7681808f]{left:0;top:0;bottom:0;width:3px;height:100%}.right[data-v-7681808f]{right:0;top:0;bottom:0;width:3px;height:100%}.el-tabs__header{padding:0;position:relative;margin:15px 0}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#3eaf7c;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#3eaf7c}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399;width:20px;text-align:center}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #3eaf7c;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#3eaf7c}.el-tabs__item:hover{color:#3eaf7c;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);margin-top:15px}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#3eaf7c;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#3eaf7c}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--top.el-tabs--card .el-tabs__item:last-child,.el-tabs--top .el-tabs--left .el-tabs__item:last-child,.el-tabs--top .el-tabs--right .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border:1px solid #e4e7ed;border-bottom:none;border-left:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:none;border-top:1px solid #e4e7ed;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:none;border-top:1px solid #e4e7ed;border-left:1px solid #fff}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.icon.outbound{color:#aaa;vertical-align:middle;top:-1px}.icon.outbound,.search-box{display:inline-block;position:relative}.search-box{margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#007af5}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:1.5rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#007af5}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#007af5}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #007af5;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#007af5}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #0b85ff}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}}.page-edit,.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit,.page-nav{padding:2rem}}@media (max-width:419px){.page-edit,.page-nav{padding:1.5rem}}.page{padding-bottom:2rem;display:block}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#007af5;border-left-color:#007af5}.sidebar-heading.clickable:hover{color:#007af5}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#007af5}a.sidebar-link.active{font-weight:600;color:#007af5;border-left-color:#007af5}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.bottom-description[data-v-73c41bb9]{text-align:center;font-size:.8rem;color:#909399;margin-top:2rem}.side-nav-item[data-v-73c41bb9]{margin-bottom:-2px;margin-left:15px;display:inline-block;line-height:1.4rem;white-space:nowrap;font-size:1rem;cursor:pointer}.side-nav-item a[data-v-73c41bb9]{color:#2c3e50}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#007af5}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#606266;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#606266;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number,div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#606266}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#007af5}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.content__default{max-width:1000px!important}p img{border:1px solid #d7dae2}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#007af5;vertical-align:top;margin-left:.5rem;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #006edd}.home .hero .action-button:hover{background-color:#1187ff;color:#fff}.home .hero .action-button2{color:#007af5;background-color:#fff;border:1px solid #007af5}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.badge[data-v-c13ee5b0]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-c13ee5b0],.badge.tip[data-v-c13ee5b0],.badge[data-v-c13ee5b0]{background-color:#42b983}.badge.error[data-v-c13ee5b0]{background-color:#da5961}.badge.warn[data-v-c13ee5b0],.badge.warning[data-v-c13ee5b0],.badge.yellow[data-v-c13ee5b0]{background-color:#e7c000}.badge+.badge[data-v-c13ee5b0]{margin-left:5px}
\ No newline at end of file
diff --git a/docs/assets/img/03d07039d9fc80c0f692d6176f65936e.7af9fab5.gif b/docs/assets/img/03d07039d9fc80c0f692d6176f65936e.7af9fab5.gif
deleted file mode 100644
index 7bb9a2e..0000000
Binary files a/docs/assets/img/03d07039d9fc80c0f692d6176f65936e.7af9fab5.gif and /dev/null differ
diff --git a/docs/assets/img/d7ce07842371eab180725bab5164ec17.d58ea9cc.png b/docs/assets/img/d7ce07842371eab180725bab5164ec17.d58ea9cc.png
deleted file mode 100644
index 78bafcd..0000000
Binary files a/docs/assets/img/d7ce07842371eab180725bab5164ec17.d58ea9cc.png and /dev/null differ
diff --git a/docs/assets/img/e7a273fcdc03d2417b354b60c253552f.19ae82d9.gif b/docs/assets/img/e7a273fcdc03d2417b354b60c253552f.19ae82d9.gif
deleted file mode 100644
index cf5fe9a..0000000
Binary files a/docs/assets/img/e7a273fcdc03d2417b354b60c253552f.19ae82d9.gif and /dev/null differ
diff --git a/docs/assets/img/image-20190713075717350.df5244cd.png b/docs/assets/img/image-20190713075717350.df5244cd.png
deleted file mode 100644
index cee4fbf..0000000
Binary files a/docs/assets/img/image-20190713075717350.df5244cd.png and /dev/null differ
diff --git a/docs/assets/img/image-20190715085036593.55559549.png b/docs/assets/img/image-20190715085036593.55559549.png
deleted file mode 100644
index b69b26b..0000000
Binary files a/docs/assets/img/image-20190715085036593.55559549.png and /dev/null differ
diff --git a/docs/assets/img/image-20190715101542756.5934c00e.png b/docs/assets/img/image-20190715101542756.5934c00e.png
deleted file mode 100644
index 2bc13ea..0000000
Binary files a/docs/assets/img/image-20190715101542756.5934c00e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190715193838012.eca23618.png b/docs/assets/img/image-20190715193838012.eca23618.png
deleted file mode 100644
index 8cb1220..0000000
Binary files a/docs/assets/img/image-20190715193838012.eca23618.png and /dev/null differ
diff --git a/docs/assets/img/image-20190716234146419.bd87cdff.png b/docs/assets/img/image-20190716234146419.bd87cdff.png
deleted file mode 100644
index ea23c7a..0000000
Binary files a/docs/assets/img/image-20190716234146419.bd87cdff.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717113807552.b3fe5f7d.png b/docs/assets/img/image-20190717113807552.b3fe5f7d.png
deleted file mode 100644
index ea7910c..0000000
Binary files a/docs/assets/img/image-20190717113807552.b3fe5f7d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717114304953.854b47d8.png b/docs/assets/img/image-20190717114304953.854b47d8.png
deleted file mode 100644
index 13b3024..0000000
Binary files a/docs/assets/img/image-20190717114304953.854b47d8.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717114354610.6d522c25.png b/docs/assets/img/image-20190717114354610.6d522c25.png
deleted file mode 100644
index 2d0db33..0000000
Binary files a/docs/assets/img/image-20190717114354610.6d522c25.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717115020848.eec5a17e.png b/docs/assets/img/image-20190717115020848.eec5a17e.png
deleted file mode 100644
index 4ea8829..0000000
Binary files a/docs/assets/img/image-20190717115020848.eec5a17e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717115403374.48894c27.png b/docs/assets/img/image-20190717115403374.48894c27.png
deleted file mode 100644
index 834c14f..0000000
Binary files a/docs/assets/img/image-20190717115403374.48894c27.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717115457614.c7f0d044.png b/docs/assets/img/image-20190717115457614.c7f0d044.png
deleted file mode 100644
index 557d66d..0000000
Binary files a/docs/assets/img/image-20190717115457614.c7f0d044.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717115829821.63b81f36.png b/docs/assets/img/image-20190717115829821.63b81f36.png
deleted file mode 100644
index 15569c0..0000000
Binary files a/docs/assets/img/image-20190717115829821.63b81f36.png and /dev/null differ
diff --git a/docs/assets/img/image-20190717193548703.5167e3b9.png b/docs/assets/img/image-20190717193548703.5167e3b9.png
deleted file mode 100644
index f5e901d..0000000
Binary files a/docs/assets/img/image-20190717193548703.5167e3b9.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718104156232.8f0c70ed.png b/docs/assets/img/image-20190718104156232.8f0c70ed.png
deleted file mode 100644
index 69eec3a..0000000
Binary files a/docs/assets/img/image-20190718104156232.8f0c70ed.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718104729472.ef92267c.png b/docs/assets/img/image-20190718104729472.ef92267c.png
deleted file mode 100644
index a277dcf..0000000
Binary files a/docs/assets/img/image-20190718104729472.ef92267c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718105420599.71e5df51.png b/docs/assets/img/image-20190718105420599.71e5df51.png
deleted file mode 100644
index c88b2e5..0000000
Binary files a/docs/assets/img/image-20190718105420599.71e5df51.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718105641651.16549369.png b/docs/assets/img/image-20190718105641651.16549369.png
deleted file mode 100644
index 2f9909b..0000000
Binary files a/docs/assets/img/image-20190718105641651.16549369.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718120957255.0e01130f.png b/docs/assets/img/image-20190718120957255.0e01130f.png
deleted file mode 100644
index 0f117a1..0000000
Binary files a/docs/assets/img/image-20190718120957255.0e01130f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190718121133160.0d0a8e13.png b/docs/assets/img/image-20190718121133160.0d0a8e13.png
deleted file mode 100644
index 0430aef..0000000
Binary files a/docs/assets/img/image-20190718121133160.0d0a8e13.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720224950653.857d1b1e.png b/docs/assets/img/image-20190720224950653.857d1b1e.png
deleted file mode 100644
index cd62d89..0000000
Binary files a/docs/assets/img/image-20190720224950653.857d1b1e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720225123111.c2b02f0c.png b/docs/assets/img/image-20190720225123111.c2b02f0c.png
deleted file mode 100644
index 0d4b3c7..0000000
Binary files a/docs/assets/img/image-20190720225123111.c2b02f0c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720225222622.2081299f.png b/docs/assets/img/image-20190720225222622.2081299f.png
deleted file mode 100644
index 9e6ab74..0000000
Binary files a/docs/assets/img/image-20190720225222622.2081299f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720232405147.8fc011f9.png b/docs/assets/img/image-20190720232405147.8fc011f9.png
deleted file mode 100644
index 3dd78b6..0000000
Binary files a/docs/assets/img/image-20190720232405147.8fc011f9.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720233322837.998be85a.png b/docs/assets/img/image-20190720233322837.998be85a.png
deleted file mode 100644
index 341ea73..0000000
Binary files a/docs/assets/img/image-20190720233322837.998be85a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720233348284.2360801d.png b/docs/assets/img/image-20190720233348284.2360801d.png
deleted file mode 100644
index 24c2461..0000000
Binary files a/docs/assets/img/image-20190720233348284.2360801d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720233412812.4f5ce20f.png b/docs/assets/img/image-20190720233412812.4f5ce20f.png
deleted file mode 100644
index ade4860..0000000
Binary files a/docs/assets/img/image-20190720233412812.4f5ce20f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720233436465.6d8cf61e.png b/docs/assets/img/image-20190720233436465.6d8cf61e.png
deleted file mode 100644
index b41262a..0000000
Binary files a/docs/assets/img/image-20190720233436465.6d8cf61e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190720233512996.d7ba2b19.png b/docs/assets/img/image-20190720233512996.d7ba2b19.png
deleted file mode 100644
index 9d0d90c..0000000
Binary files a/docs/assets/img/image-20190720233512996.d7ba2b19.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721000526434.cfdf2d30.png b/docs/assets/img/image-20190721000526434.cfdf2d30.png
deleted file mode 100644
index e22304a..0000000
Binary files a/docs/assets/img/image-20190721000526434.cfdf2d30.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721000759925.bb32a332.png b/docs/assets/img/image-20190721000759925.bb32a332.png
deleted file mode 100644
index fc41650..0000000
Binary files a/docs/assets/img/image-20190721000759925.bb32a332.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721000822458.5797bca7.png b/docs/assets/img/image-20190721000822458.5797bca7.png
deleted file mode 100644
index a9b5874..0000000
Binary files a/docs/assets/img/image-20190721000822458.5797bca7.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721000847954.6f05e4b8.png b/docs/assets/img/image-20190721000847954.6f05e4b8.png
deleted file mode 100644
index 953d580..0000000
Binary files a/docs/assets/img/image-20190721000847954.6f05e4b8.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721000919933.3a1d313e.png b/docs/assets/img/image-20190721000919933.3a1d313e.png
deleted file mode 100644
index 5f2364c..0000000
Binary files a/docs/assets/img/image-20190721000919933.3a1d313e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721085144545.25f25dda.png b/docs/assets/img/image-20190721085144545.25f25dda.png
deleted file mode 100644
index 11cce03..0000000
Binary files a/docs/assets/img/image-20190721085144545.25f25dda.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721090118542.46c31055.png b/docs/assets/img/image-20190721090118542.46c31055.png
deleted file mode 100644
index 50f89bf..0000000
Binary files a/docs/assets/img/image-20190721090118542.46c31055.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721090753742.28d009f3.png b/docs/assets/img/image-20190721090753742.28d009f3.png
deleted file mode 100644
index 7eebc36..0000000
Binary files a/docs/assets/img/image-20190721090753742.28d009f3.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721090840925.a5231632.png b/docs/assets/img/image-20190721090840925.a5231632.png
deleted file mode 100644
index 158664d..0000000
Binary files a/docs/assets/img/image-20190721090840925.a5231632.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721090935511.80fb3864.png b/docs/assets/img/image-20190721090935511.80fb3864.png
deleted file mode 100644
index e6effa7..0000000
Binary files a/docs/assets/img/image-20190721090935511.80fb3864.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721091005130.330e9f1d.png b/docs/assets/img/image-20190721091005130.330e9f1d.png
deleted file mode 100644
index f5f638f..0000000
Binary files a/docs/assets/img/image-20190721091005130.330e9f1d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721100715898.f0faa9aa.png b/docs/assets/img/image-20190721100715898.f0faa9aa.png
deleted file mode 100644
index 1164f2b..0000000
Binary files a/docs/assets/img/image-20190721100715898.f0faa9aa.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721101812895.8f059471.png b/docs/assets/img/image-20190721101812895.8f059471.png
deleted file mode 100644
index 32d8844..0000000
Binary files a/docs/assets/img/image-20190721101812895.8f059471.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721101954560.176c574c.png b/docs/assets/img/image-20190721101954560.176c574c.png
deleted file mode 100644
index 6a9c046..0000000
Binary files a/docs/assets/img/image-20190721101954560.176c574c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721103324863.72744076.png b/docs/assets/img/image-20190721103324863.72744076.png
deleted file mode 100644
index abc8eda..0000000
Binary files a/docs/assets/img/image-20190721103324863.72744076.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721104153954.74fb88ec.png b/docs/assets/img/image-20190721104153954.74fb88ec.png
deleted file mode 100644
index 430b397..0000000
Binary files a/docs/assets/img/image-20190721104153954.74fb88ec.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721104348908.ce6e526d.png b/docs/assets/img/image-20190721104348908.ce6e526d.png
deleted file mode 100644
index a13fd50..0000000
Binary files a/docs/assets/img/image-20190721104348908.ce6e526d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721104415732.07ea4278.png b/docs/assets/img/image-20190721104415732.07ea4278.png
deleted file mode 100644
index 70a557d..0000000
Binary files a/docs/assets/img/image-20190721104415732.07ea4278.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721104522870.6c74e0bb.png b/docs/assets/img/image-20190721104522870.6c74e0bb.png
deleted file mode 100644
index bee3115..0000000
Binary files a/docs/assets/img/image-20190721104522870.6c74e0bb.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721110355464.25f25dda.png b/docs/assets/img/image-20190721110355464.25f25dda.png
deleted file mode 100644
index 11cce03..0000000
Binary files a/docs/assets/img/image-20190721110355464.25f25dda.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721110543437.8cbe188d.png b/docs/assets/img/image-20190721110543437.8cbe188d.png
deleted file mode 100644
index 04b26eb..0000000
Binary files a/docs/assets/img/image-20190721110543437.8cbe188d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721111011798.b9cc73b4.png b/docs/assets/img/image-20190721111011798.b9cc73b4.png
deleted file mode 100644
index b648c4a..0000000
Binary files a/docs/assets/img/image-20190721111011798.b9cc73b4.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721111540512.b0a58451.png b/docs/assets/img/image-20190721111540512.b0a58451.png
deleted file mode 100644
index 8fd7e75..0000000
Binary files a/docs/assets/img/image-20190721111540512.b0a58451.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721111642221.f9c06dc3.png b/docs/assets/img/image-20190721111642221.f9c06dc3.png
deleted file mode 100644
index 3a27ad8..0000000
Binary files a/docs/assets/img/image-20190721111642221.f9c06dc3.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721112353077.b907aa89.png b/docs/assets/img/image-20190721112353077.b907aa89.png
deleted file mode 100644
index 70bc857..0000000
Binary files a/docs/assets/img/image-20190721112353077.b907aa89.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721112624128.7aa6b8f1.png b/docs/assets/img/image-20190721112624128.7aa6b8f1.png
deleted file mode 100644
index 3081248..0000000
Binary files a/docs/assets/img/image-20190721112624128.7aa6b8f1.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721113050608.97e0f110.png b/docs/assets/img/image-20190721113050608.97e0f110.png
deleted file mode 100644
index 97df555..0000000
Binary files a/docs/assets/img/image-20190721113050608.97e0f110.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721113155991.f3ecd62f.png b/docs/assets/img/image-20190721113155991.f3ecd62f.png
deleted file mode 100644
index fe000fe..0000000
Binary files a/docs/assets/img/image-20190721113155991.f3ecd62f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721113708689.f9b42a11.png b/docs/assets/img/image-20190721113708689.f9b42a11.png
deleted file mode 100644
index c1449c2..0000000
Binary files a/docs/assets/img/image-20190721113708689.f9b42a11.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721113810235.59d55672.png b/docs/assets/img/image-20190721113810235.59d55672.png
deleted file mode 100644
index f9e3d4f..0000000
Binary files a/docs/assets/img/image-20190721113810235.59d55672.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721114112644.526de44c.png b/docs/assets/img/image-20190721114112644.526de44c.png
deleted file mode 100644
index 3abb2ab..0000000
Binary files a/docs/assets/img/image-20190721114112644.526de44c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721114211751.e1a07115.png b/docs/assets/img/image-20190721114211751.e1a07115.png
deleted file mode 100644
index 5ebf339..0000000
Binary files a/docs/assets/img/image-20190721114211751.e1a07115.png and /dev/null differ
diff --git a/docs/assets/img/image-20190721154650916.3f63fdcb.jpg b/docs/assets/img/image-20190721154650916.3f63fdcb.jpg
deleted file mode 100644
index f8f2dd7..0000000
Binary files a/docs/assets/img/image-20190721154650916.3f63fdcb.jpg and /dev/null differ
diff --git a/docs/assets/img/image-20190722162249531.e826dfb9.png b/docs/assets/img/image-20190722162249531.e826dfb9.png
deleted file mode 100644
index 73fc18f..0000000
Binary files a/docs/assets/img/image-20190722162249531.e826dfb9.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722165648180.fe018998.png b/docs/assets/img/image-20190722165648180.fe018998.png
deleted file mode 100644
index 4d965f3..0000000
Binary files a/docs/assets/img/image-20190722165648180.fe018998.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722172356943.9a901574.png b/docs/assets/img/image-20190722172356943.9a901574.png
deleted file mode 100644
index 4483c6b..0000000
Binary files a/docs/assets/img/image-20190722172356943.9a901574.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722182005060.8e560b34.png b/docs/assets/img/image-20190722182005060.8e560b34.png
deleted file mode 100644
index 0a2ed93..0000000
Binary files a/docs/assets/img/image-20190722182005060.8e560b34.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722183329825.63739750.png b/docs/assets/img/image-20190722183329825.63739750.png
deleted file mode 100644
index 2004c11..0000000
Binary files a/docs/assets/img/image-20190722183329825.63739750.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722183750444.973f7dfa.png b/docs/assets/img/image-20190722183750444.973f7dfa.png
deleted file mode 100644
index ddd2c37..0000000
Binary files a/docs/assets/img/image-20190722183750444.973f7dfa.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722184943431.f2f72e7c.png b/docs/assets/img/image-20190722184943431.f2f72e7c.png
deleted file mode 100644
index d1f846e..0000000
Binary files a/docs/assets/img/image-20190722184943431.f2f72e7c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722185113938.4d31e54b.png b/docs/assets/img/image-20190722185113938.4d31e54b.png
deleted file mode 100644
index d45db33..0000000
Binary files a/docs/assets/img/image-20190722185113938.4d31e54b.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722223454676.b545b43f.png b/docs/assets/img/image-20190722223454676.b545b43f.png
deleted file mode 100644
index 59a4ad9..0000000
Binary files a/docs/assets/img/image-20190722223454676.b545b43f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722223551308.ed106a2a.png b/docs/assets/img/image-20190722223551308.ed106a2a.png
deleted file mode 100644
index ca8208a..0000000
Binary files a/docs/assets/img/image-20190722223551308.ed106a2a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722223605920.3e762b29.png b/docs/assets/img/image-20190722223605920.3e762b29.png
deleted file mode 100644
index 8e1ca62..0000000
Binary files a/docs/assets/img/image-20190722223605920.3e762b29.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722224029397.abc44209.png b/docs/assets/img/image-20190722224029397.abc44209.png
deleted file mode 100644
index c103044..0000000
Binary files a/docs/assets/img/image-20190722224029397.abc44209.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722225347491.984fabae.png b/docs/assets/img/image-20190722225347491.984fabae.png
deleted file mode 100644
index e1f974b..0000000
Binary files a/docs/assets/img/image-20190722225347491.984fabae.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722225454029.73400267.png b/docs/assets/img/image-20190722225454029.73400267.png
deleted file mode 100644
index add9c7a..0000000
Binary files a/docs/assets/img/image-20190722225454029.73400267.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722230511430.ed459354.png b/docs/assets/img/image-20190722230511430.ed459354.png
deleted file mode 100644
index 79b674d..0000000
Binary files a/docs/assets/img/image-20190722230511430.ed459354.png and /dev/null differ
diff --git a/docs/assets/img/image-20190722231246540.ebf13194.png b/docs/assets/img/image-20190722231246540.ebf13194.png
deleted file mode 100644
index bbd9b02..0000000
Binary files a/docs/assets/img/image-20190722231246540.ebf13194.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723104717575.f44900d3.png b/docs/assets/img/image-20190723104717575.f44900d3.png
deleted file mode 100644
index 4fb805a..0000000
Binary files a/docs/assets/img/image-20190723104717575.f44900d3.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105039358.91eef75a.png b/docs/assets/img/image-20190723105039358.91eef75a.png
deleted file mode 100644
index 877a9b8..0000000
Binary files a/docs/assets/img/image-20190723105039358.91eef75a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105606081.bc471512.png b/docs/assets/img/image-20190723105606081.bc471512.png
deleted file mode 100644
index 41bd8fe..0000000
Binary files a/docs/assets/img/image-20190723105606081.bc471512.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105644937.968b1660.png b/docs/assets/img/image-20190723105644937.968b1660.png
deleted file mode 100644
index fcb1554..0000000
Binary files a/docs/assets/img/image-20190723105644937.968b1660.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105722999.5b6c9bae.png b/docs/assets/img/image-20190723105722999.5b6c9bae.png
deleted file mode 100644
index 46e5148..0000000
Binary files a/docs/assets/img/image-20190723105722999.5b6c9bae.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105748435.1cb3ad0d.png b/docs/assets/img/image-20190723105748435.1cb3ad0d.png
deleted file mode 100644
index 13274ed..0000000
Binary files a/docs/assets/img/image-20190723105748435.1cb3ad0d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105809872.61add376.png b/docs/assets/img/image-20190723105809872.61add376.png
deleted file mode 100644
index 9aefe57..0000000
Binary files a/docs/assets/img/image-20190723105809872.61add376.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723105830318.43414c56.png b/docs/assets/img/image-20190723105830318.43414c56.png
deleted file mode 100644
index e8789e1..0000000
Binary files a/docs/assets/img/image-20190723105830318.43414c56.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723112105018.a27c638f.png b/docs/assets/img/image-20190723112105018.a27c638f.png
deleted file mode 100644
index a96c3ea..0000000
Binary files a/docs/assets/img/image-20190723112105018.a27c638f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723112143032.7a5220bd.png b/docs/assets/img/image-20190723112143032.7a5220bd.png
deleted file mode 100644
index 2ef85c9..0000000
Binary files a/docs/assets/img/image-20190723112143032.7a5220bd.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723112204681.8279ca8f.png b/docs/assets/img/image-20190723112204681.8279ca8f.png
deleted file mode 100644
index f8976db..0000000
Binary files a/docs/assets/img/image-20190723112204681.8279ca8f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723113250521.3b80f3d2.png b/docs/assets/img/image-20190723113250521.3b80f3d2.png
deleted file mode 100644
index dfe0bd5..0000000
Binary files a/docs/assets/img/image-20190723113250521.3b80f3d2.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723113312360.a3a51c0c.png b/docs/assets/img/image-20190723113312360.a3a51c0c.png
deleted file mode 100644
index 323f663..0000000
Binary files a/docs/assets/img/image-20190723113312360.a3a51c0c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723115721514.bf981ef3.png b/docs/assets/img/image-20190723115721514.bf981ef3.png
deleted file mode 100644
index 79274cd..0000000
Binary files a/docs/assets/img/image-20190723115721514.bf981ef3.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723115852719.f1658660.png b/docs/assets/img/image-20190723115852719.f1658660.png
deleted file mode 100644
index 7f24868..0000000
Binary files a/docs/assets/img/image-20190723115852719.f1658660.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723115912645.393d67ff.png b/docs/assets/img/image-20190723115912645.393d67ff.png
deleted file mode 100644
index cdb7918..0000000
Binary files a/docs/assets/img/image-20190723115912645.393d67ff.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723115940862.dfeacc57.png b/docs/assets/img/image-20190723115940862.dfeacc57.png
deleted file mode 100644
index a933609..0000000
Binary files a/docs/assets/img/image-20190723115940862.dfeacc57.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120011972.0f0914c5.png b/docs/assets/img/image-20190723120011972.0f0914c5.png
deleted file mode 100644
index 6cbe1b4..0000000
Binary files a/docs/assets/img/image-20190723120011972.0f0914c5.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120050894.9b1d6350.png b/docs/assets/img/image-20190723120050894.9b1d6350.png
deleted file mode 100644
index bc5bc3e..0000000
Binary files a/docs/assets/img/image-20190723120050894.9b1d6350.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120104474.617a620a.png b/docs/assets/img/image-20190723120104474.617a620a.png
deleted file mode 100644
index 949e9a2..0000000
Binary files a/docs/assets/img/image-20190723120104474.617a620a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120125425.a46d7874.png b/docs/assets/img/image-20190723120125425.a46d7874.png
deleted file mode 100644
index ee0cb2a..0000000
Binary files a/docs/assets/img/image-20190723120125425.a46d7874.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120730196.9793d8ec.png b/docs/assets/img/image-20190723120730196.9793d8ec.png
deleted file mode 100644
index 001fb09..0000000
Binary files a/docs/assets/img/image-20190723120730196.9793d8ec.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120753533.081b6d6b.png b/docs/assets/img/image-20190723120753533.081b6d6b.png
deleted file mode 100644
index 57750e6..0000000
Binary files a/docs/assets/img/image-20190723120753533.081b6d6b.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120832778.e154bccd.png b/docs/assets/img/image-20190723120832778.e154bccd.png
deleted file mode 100644
index 9c69f9b..0000000
Binary files a/docs/assets/img/image-20190723120832778.e154bccd.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120912377.e1404406.png b/docs/assets/img/image-20190723120912377.e1404406.png
deleted file mode 100644
index d8c0582..0000000
Binary files a/docs/assets/img/image-20190723120912377.e1404406.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120926747.c9754776.png b/docs/assets/img/image-20190723120926747.c9754776.png
deleted file mode 100644
index b91d0c9..0000000
Binary files a/docs/assets/img/image-20190723120926747.c9754776.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723120956821.69bcdbbe.png b/docs/assets/img/image-20190723120956821.69bcdbbe.png
deleted file mode 100644
index fa5b4d7..0000000
Binary files a/docs/assets/img/image-20190723120956821.69bcdbbe.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121019167.81af1060.png b/docs/assets/img/image-20190723121019167.81af1060.png
deleted file mode 100644
index 600eed0..0000000
Binary files a/docs/assets/img/image-20190723121019167.81af1060.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121035917.8a2b1320.png b/docs/assets/img/image-20190723121035917.8a2b1320.png
deleted file mode 100644
index 22d4167..0000000
Binary files a/docs/assets/img/image-20190723121035917.8a2b1320.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121055648.2c6ba8d1.png b/docs/assets/img/image-20190723121055648.2c6ba8d1.png
deleted file mode 100644
index ff75167..0000000
Binary files a/docs/assets/img/image-20190723121055648.2c6ba8d1.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121117514.ef774d3a.png b/docs/assets/img/image-20190723121117514.ef774d3a.png
deleted file mode 100644
index c090edc..0000000
Binary files a/docs/assets/img/image-20190723121117514.ef774d3a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121132991.69146097.png b/docs/assets/img/image-20190723121132991.69146097.png
deleted file mode 100644
index 19a7654..0000000
Binary files a/docs/assets/img/image-20190723121132991.69146097.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121412027.6888452e.png b/docs/assets/img/image-20190723121412027.6888452e.png
deleted file mode 100644
index 788ec2d..0000000
Binary files a/docs/assets/img/image-20190723121412027.6888452e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723121433809.7a1b4b00.png b/docs/assets/img/image-20190723121433809.7a1b4b00.png
deleted file mode 100644
index 6b16089..0000000
Binary files a/docs/assets/img/image-20190723121433809.7a1b4b00.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723150525017.378015c8.png b/docs/assets/img/image-20190723150525017.378015c8.png
deleted file mode 100644
index cbb704c..0000000
Binary files a/docs/assets/img/image-20190723150525017.378015c8.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723150616633.17a9797e.png b/docs/assets/img/image-20190723150616633.17a9797e.png
deleted file mode 100644
index dcdf8c3..0000000
Binary files a/docs/assets/img/image-20190723150616633.17a9797e.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723150853277.c168bc57.png b/docs/assets/img/image-20190723150853277.c168bc57.png
deleted file mode 100644
index 26c2237..0000000
Binary files a/docs/assets/img/image-20190723150853277.c168bc57.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151045112.5329884a.png b/docs/assets/img/image-20190723151045112.5329884a.png
deleted file mode 100644
index 5938540..0000000
Binary files a/docs/assets/img/image-20190723151045112.5329884a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151103353.3c29b906.png b/docs/assets/img/image-20190723151103353.3c29b906.png
deleted file mode 100644
index 28a0acf..0000000
Binary files a/docs/assets/img/image-20190723151103353.3c29b906.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151339137.5f756564.png b/docs/assets/img/image-20190723151339137.5f756564.png
deleted file mode 100644
index 54af897..0000000
Binary files a/docs/assets/img/image-20190723151339137.5f756564.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151357262.e79d2b6c.png b/docs/assets/img/image-20190723151357262.e79d2b6c.png
deleted file mode 100644
index 4252791..0000000
Binary files a/docs/assets/img/image-20190723151357262.e79d2b6c.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151422460.f02b1a28.png b/docs/assets/img/image-20190723151422460.f02b1a28.png
deleted file mode 100644
index 6ca2bc7..0000000
Binary files a/docs/assets/img/image-20190723151422460.f02b1a28.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151711230.c3dd4c41.png b/docs/assets/img/image-20190723151711230.c3dd4c41.png
deleted file mode 100644
index f0c8cba..0000000
Binary files a/docs/assets/img/image-20190723151711230.c3dd4c41.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151804727.287fa561.png b/docs/assets/img/image-20190723151804727.287fa561.png
deleted file mode 100644
index 988eaa9..0000000
Binary files a/docs/assets/img/image-20190723151804727.287fa561.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151845303.f2b8415a.png b/docs/assets/img/image-20190723151845303.f2b8415a.png
deleted file mode 100644
index 031a446..0000000
Binary files a/docs/assets/img/image-20190723151845303.f2b8415a.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151902003.1ef39b19.png b/docs/assets/img/image-20190723151902003.1ef39b19.png
deleted file mode 100644
index a929719..0000000
Binary files a/docs/assets/img/image-20190723151902003.1ef39b19.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151914994.fa026f01.png b/docs/assets/img/image-20190723151914994.fa026f01.png
deleted file mode 100644
index 0b02440..0000000
Binary files a/docs/assets/img/image-20190723151914994.fa026f01.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151932871.cbc894da.png b/docs/assets/img/image-20190723151932871.cbc894da.png
deleted file mode 100644
index b41157c..0000000
Binary files a/docs/assets/img/image-20190723151932871.cbc894da.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723151951910.c3248933.png b/docs/assets/img/image-20190723151951910.c3248933.png
deleted file mode 100644
index 38d5402..0000000
Binary files a/docs/assets/img/image-20190723151951910.c3248933.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723152020605.31eccc82.png b/docs/assets/img/image-20190723152020605.31eccc82.png
deleted file mode 100644
index ab5a3ec..0000000
Binary files a/docs/assets/img/image-20190723152020605.31eccc82.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723152040219.45660f67.png b/docs/assets/img/image-20190723152040219.45660f67.png
deleted file mode 100644
index 96e5820..0000000
Binary files a/docs/assets/img/image-20190723152040219.45660f67.png and /dev/null differ
diff --git a/docs/assets/img/image-20190723152124196.9ef1af43.png b/docs/assets/img/image-20190723152124196.9ef1af43.png
deleted file mode 100644
index e0be55e..0000000
Binary files a/docs/assets/img/image-20190723152124196.9ef1af43.png and /dev/null differ
diff --git a/docs/assets/img/image-20190726214032585.f5bc62e4.png b/docs/assets/img/image-20190726214032585.f5bc62e4.png
deleted file mode 100644
index 6ca243a..0000000
Binary files a/docs/assets/img/image-20190726214032585.f5bc62e4.png and /dev/null differ
diff --git a/docs/assets/img/image-20190728145108904.8f9c0d1d.png b/docs/assets/img/image-20190728145108904.8f9c0d1d.png
deleted file mode 100644
index e69013a..0000000
Binary files a/docs/assets/img/image-20190728145108904.8f9c0d1d.png and /dev/null differ
diff --git a/docs/assets/img/image-20190728220831126.b579017f.png b/docs/assets/img/image-20190728220831126.b579017f.png
deleted file mode 100644
index 0274821..0000000
Binary files a/docs/assets/img/image-20190728220831126.b579017f.png and /dev/null differ
diff --git a/docs/assets/img/image-20190729071443225.13b42ed9.png b/docs/assets/img/image-20190729071443225.13b42ed9.png
deleted file mode 100644
index c75c03f..0000000
Binary files a/docs/assets/img/image-20190729071443225.13b42ed9.png and /dev/null differ
diff --git a/docs/assets/img/image-20190729071954323.13b88af4.png b/docs/assets/img/image-20190729071954323.13b88af4.png
deleted file mode 100644
index 45e53a9..0000000
Binary files a/docs/assets/img/image-20190729071954323.13b88af4.png and /dev/null differ
diff --git a/docs/assets/img/image2019-07-15_09.01.21.0e0d34f2.png b/docs/assets/img/image2019-07-15_09.01.21.0e0d34f2.png
deleted file mode 100644
index 192045b..0000000
Binary files a/docs/assets/img/image2019-07-15_09.01.21.0e0d34f2.png and /dev/null differ
diff --git a/docs/assets/img/image2019-6-10_15-36-29.2870ee7d.png b/docs/assets/img/image2019-6-10_15-36-29.2870ee7d.png
deleted file mode 100644
index 8d8973c..0000000
Binary files a/docs/assets/img/image2019-6-10_15-36-29.2870ee7d.png and /dev/null differ
diff --git a/docs/assets/img/kuboard_qq.45e78dbf.png b/docs/assets/img/kuboard_qq.45e78dbf.png
deleted file mode 100644
index ab3123e..0000000
Binary files a/docs/assets/img/kuboard_qq.45e78dbf.png and /dev/null differ
diff --git a/docs/assets/img/search.83621669.svg b/docs/assets/img/search.83621669.svg
deleted file mode 100644
index 03d8391..0000000
--- a/docs/assets/img/search.83621669.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/assets/js/10.95ba08b2.js b/docs/assets/js/10.95ba08b2.js
deleted file mode 100644
index 0405d2e..0000000
--- a/docs/assets/js/10.95ba08b2.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{315:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223454676.b545b43f.png"},316:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223551308.ed106a2a.png"},317:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223605920.3e762b29.png"},318:function(t,e,a){t.exports=a.p+"assets/img/image-20190722231246540.ebf13194.png"},319:function(t,e,a){t.exports=a.p+"assets/img/image-20190722224029397.abc44209.png"},320:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225347491.984fabae.png"},321:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225454029.73400267.png"},322:function(t,e,a){t.exports=a.p+"assets/img/image-20190722230511430.ed459354.png"},380: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(315),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(316),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(317),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(318),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(319),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(320),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(321),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(322),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/11.32fc5ebf.js b/docs/assets/js/11.32fc5ebf.js
deleted file mode 100644
index ac6a930..0000000
--- a/docs/assets/js/11.32fc5ebf.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{141:function(t,e,i){},143:function(t,e,i){},208:function(t,e,i){t.exports=i.p+"assets/img/kuboard_qq.45e78dbf.png"},209:function(t,e,i){t.exports=i.p+"assets/img/image-20190723104717575.f44900d3.png"},210:function(t,e,i){"use strict";var s=i(141);i.n(s).a},212:function(t,e,i){"use strict";var s=i(143);i.n(s).a},353:function(t,e,i){"use strict";var s=i(161),a=i(208),n=i.n(a),r=i(209),o=i.n(r),l={name:"Sidebar",props:["items"],components:{SidebarLinks:s.default},data:function(){return{kuboard_qq_img:n.a,demo_img:o.a}}},c=(i(210),i(0)),v=Object(c.a)(l,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("aside",{staticClass:"sidebar"},[t._t("top"),t._v(" "),i("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom"),t._v(" "),i("div",{staticStyle:{"text-align":"center","margin-top":"5vh"}},[i("strong",[t._v("在线体验")]),t._v(" "),i("div",[i("a",{attrs:{target:"_blank",href:"http://demo.eip.work/#/login?isReadOnly=true&token="+t.$site.themeConfig.kuboardToken}},[i("p",[i("img",{staticStyle:{width:"226px",height:"127px"},attrs:{src:t.demo_img}})])])]),t._v(" "),t._m(0),t._v(" "),i("strong",[t._v("在线提问")]),t._v(" "),i("p",[i("img",{attrs:{src:t.kuboard_qq_img}})])])],2)},[function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("strong",[e("a",{attrs:{href:"https://github.com/shaohq/kuboard-issues/issues",target:"_blank"}},[this._v("提交 BUG")])])])}],!1,null,null,null);e.a=v.exports},356:function(t,e,i){"use strict";i.r(e);i(38);var s={components:{ParentLayout:i(352).a},methods:{activeLinkStyle:function(t){return 0===this.$page.path.indexOf(t)?"border-bottom: 2px solid #0b85ff;":""}}},a=(i(212),i(0)),n=Object(a.a)(s,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ParentLayout",[i("div",{attrs:{slot:"sidebar-top"},slot:"sidebar-top"},[i("div",{staticStyle:{"text-align":"center","margin-top":"20px"}},[i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/overview/")+"margin-left: 0;"},[i("a",{staticClass:"nav-link",attrs:{href:"/overview/"}},[t._v("简介")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/install/")},[i("a",{staticClass:"nav-link router-link-exact-active router-link-active",attrs:{href:"/install/install-dashboard"}},[t._v("安装")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/guide/")},[i("a",{staticClass:"nav-link",attrs:{href:"/guide/"}},[t._v("使用")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/micro-service/")},[i("a",{staticClass:"nav-link",attrs:{href:"/micro-service/spring-cloud/"}},[t._v("微服务")])])])]),t._v(" "),i("div",{staticClass:"bottom-description",attrs:{slot:"page-bottom"},slot:"page-bottom"},[t._v("Copyright © 2019-present Huanqing Shao | 京ICP备19008693号-2")])])},[],!1,null,"73c41bb9",null);e.default=n.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/12.fd26a3df.js b/docs/assets/js/12.fd26a3df.js
deleted file mode 100644
index 4370f05..0000000
--- a/docs/assets/js/12.fd26a3df.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{216:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105606081.bc471512.png"},217:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105644937.968b1660.png"},218:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105722999.5b6c9bae.png"},219:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105748435.1cb3ad0d.png"},220:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105809872.61add376.png"},221:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105830318.43414c56.png"},377:function(t,a,e){"use strict";e.r(a);var s=e(0),r=Object(s.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"名称空间管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#名称空间管理","aria-hidden":"true"}},[t._v("#")]),t._v(" 名称空间管理")]),t._v(" "),s("h2",{attrs:{id:"创建名称空间"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建名称空间","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建名称空间")]),t._v(" "),s("h3",{attrs:{id:"前提"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),s("p",[t._v("必须具备如下条件:")]),t._v(" "),s("ul",[s("li",[t._v("Kubernetes 集群")]),t._v(" "),s("li",[t._v("已在集群中安装 Kuboard")]),t._v(" "),s("li",[t._v("已进入 Kuboard 操作界面 "),s("a",{attrs:{href:"/install/install-dashboard"}},[t._v("安装并进入 Kuboard")])])]),t._v(" "),s("p",[t._v("假设您已经进入了 Kuboard 界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:e(216),alt:"image-20190723105606081"}})]),t._v(" "),s("h3",{attrs:{id:"准备"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#准备","aria-hidden":"true"}},[t._v("#")]),t._v(" 准备")]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("创建")])]),t._v(" 按钮,创建名称空间")])]),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("example")]),t._v(" "),s("td",[t._v("Kubernetes 的 namespace 名称")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(217),alt:"image-20190723105644937"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("保存")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(218),alt:"image-20190723105722999"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("应用")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(219),alt:"image-20190723105748435"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("完成")])])]),t._v(" "),s("p",[t._v("此时可在名称空间列表中查看到刚刚创建好的名称空间 "),s("em",[t._v("example")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(220),alt:"image-20190723105809872"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间")]),t._v(" "),s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间后,可进入该名称空间的页面。刚刚初始化的名称空间的界面布局如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(221),alt:"image-20190723105830318"}})])])},[],!1,null,null,null);a.default=r.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/13.5ae79232.js b/docs/assets/js/13.5ae79232.js
deleted file mode 100644
index 11a7206..0000000
--- a/docs/assets/js/13.5ae79232.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{301:function(a,t,s){a.exports=s.p+"assets/img/image-20190721085144545.25f25dda.png"},302:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090118542.46c31055.png"},303:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090753742.28d009f3.png"},304:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090840925.a5231632.png"},305:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090935511.80fb3864.png"},306:function(a,t,s){a.exports=s.p+"assets/img/image-20190721091005130.330e9f1d.png"},374:function(a,t,s){"use strict";s.r(t);var e=s(0),r=Object(e.a)({},function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"多环境"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#多环境","aria-hidden":"true"}},[a._v("#")]),a._v(" 多环境")]),a._v(" "),e("p",[a._v("在实际开发项目的过程中,我们必然会碰到如下场景:")]),a._v(" "),e("ol",[e("li",[a._v("创建一个开发环境,并在其中完成应用部署")]),a._v(" "),e("li",[a._v("创建一个测试环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个准上线环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个生产环境,再次完成应用部署")])]),a._v(" "),e("p",[a._v("当我们的微服务系统较为复杂时,一个环境中可能需要部署许多(几十个甚至更多)的微服务部署单元,这个时候,重复在多套环境中执行部署任务就会变得容易出错。")]),a._v(" "),e("p",[a._v("Kuboard 针对这种场景,提供了导出配置、导入配置的功能,以便运维人员可以轻易的复制多套部署环境。")]),a._v(" "),e("h2",{attrs:{id:"导出配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导出配置")]),a._v(" "),e("h3",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("必须满足如下条件:")]),a._v(" "),e("ul",[e("li",[a._v("您已经通过 kuboard 的 "),e("a",{attrs:{href:"/guide/namespace/workload"}},[a._v("创建工作负载")]),a._v(" 功能完成了微服务的部署。")])]),a._v(" "),e("blockquote",[e("p",[a._v("部署微服务过程中,您还可能用到 kuboard 的配置编辑功能、Secrets 编辑功能 等。")])]),a._v(" "),e("p",[a._v("假设您已完成微服务部署,并已进入 namespace 界面,如下图所示:")]),a._v(" "),e("p",[e("img",{attrs:{src:s(301),alt:"image-20190721085144545"}})]),a._v(" "),e("h3",{attrs:{id:"操作步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("导出工作负载")])]),a._v(" "),e("ul",[e("li",[a._v("选择要导出的分层")]),a._v(" "),e("li",[a._v("点击 "),e("em",[e("strong",[a._v("刷新")])])]),a._v(" "),e("li",[a._v("选择要导出的工作负载")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(302),alt:"image-20190721090118542"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的配置(configMap)信息")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(303),alt:"image-20190721090753742"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的 Secrets")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(304),alt:"image-20190721090840925"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(305),alt:"image-20190721090935511"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("确定")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(306),alt:"image-20190721091005130"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("查看已导出文件")]),a._v(" "),e("p",[a._v("导出文件的命名格式为 kuboard_namespace_date_time.yaml,例如:")]),a._v(" "),e("p",[a._v("kuboard_example_2019_07_21_09_09_47.yaml")]),a._v(" "),e("p",[a._v("导出文件的内容如下所示:")]),a._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("---")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("apiVersion")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" apps/v1\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("kind")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" StatefulSet\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("namespace")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" example\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("annotations")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/workload")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/displayName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" 服务注册\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/service")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" ClusterIP\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/ingress")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'true'")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("labels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("spec")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("selector")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("matchLabels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("template")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("...")]),a._v("\n")])])])])]),a._v(" "),e("blockquote",[e("p",[a._v("该文件可以通过 kubectl apply -f 命令直接执行,但是建议使用 kuboard 进行导入,以便在导入时在线编辑在特定于新环境的配置信息。")])]),a._v(" "),e("h2",{attrs:{id:"导入配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导入配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导入配置")]),a._v(" "),e("h3",{attrs:{id:"前提-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("您已经通过 kuboard 导出了配置文件,或者从别处获取到 kuboard 导出的配置文件")]),a._v(" "),e("h3",{attrs:{id:"操作步骤-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("p",[a._v("请参考 "),e("a",{attrs:{href:"/guide/example/import"}},[a._v("导入 example 微服务")])])])},[],!1,null,null,null);t.default=r.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/14.71b75ecf.js b/docs/assets/js/14.71b75ecf.js
deleted file mode 100644
index acf1bae..0000000
--- a/docs/assets/js/14.71b75ecf.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{327:function(e,A,t){e.exports=t.p+"assets/img/d7ce07842371eab180725bab5164ec17.d58ea9cc.png"},328:function(e,A){e.exports="data:image/png;base64,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"},329:function(e,A){e.exports="data:image/png;base64,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"},330:function(e,A){e.exports="data:image/png;base64,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"},331:function(e,A,t){e.exports=t.p+"assets/img/03d07039d9fc80c0f692d6176f65936e.7af9fab5.gif"},332:function(e,A,t){e.exports=t.p+"assets/img/e7a273fcdc03d2417b354b60c253552f.19ae82d9.gif"},376:function(e,A,t){"use strict";t.r(A);var r=t(0),l=Object(r.a)({},function(){var e=this,A=e.$createElement,r=e._self._c||A;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"十分钟带你理解kubernetes核心概念"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#十分钟带你理解kubernetes核心概念","aria-hidden":"true"}},[e._v("#")]),e._v(" 十分钟带你理解Kubernetes核心概念")]),e._v(" "),r("blockquote",[r("p",[e._v("转载信息:")]),e._v(" "),r("p",[r("a",{attrs:{href:"http://www.dockone.io/article/932",target:"_blank",rel:"noopener noreferrer"}},[e._v("译文链接"),r("OutboundLink")],1),e._v(" 译者:崔婧雯")]),e._v(" "),r("p",[r("a",{attrs:{href:"http://omerio.com/2015/12/18/learn-the-kubernetes-key-concepts-in-10-minutes/",target:"_blank",rel:"noopener noreferrer"}},[e._v("原文链接"),r("OutboundLink")],1),e._v(" 作者:Omer Dawelbeit")])]),e._v(" "),r("p",[e._v("本文将会简单介绍Kubernetes的核心概念。因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍。相反,我们会使用一些图表(其中一些是动画)和示例来解释这些概念。我们发现一些概念(比如Service)如果没有图表的辅助就很难全面地理解。在合适的地方我们也会提供Kubernetes文档的链接以便读者深入学习。")]),e._v(" "),r("h2",{attrs:{id:"什么是kubernetes?"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#什么是kubernetes?","aria-hidden":"true"}},[e._v("#")]),e._v(" 什么是Kubernetes?")]),e._v(" "),r("p",[e._v("Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。\n使用Kubernetes可以:")]),e._v(" "),r("ul",[r("li",[e._v("自动化容器的部署和复制")]),e._v(" "),r("li",[e._v("随时扩展或收缩容器规模")]),e._v(" "),r("li",[e._v("将容器组织成组,并且提供容器间的负载均衡")]),e._v(" "),r("li",[e._v("很容易地升级应用程序容器的新版本")]),e._v(" "),r("li",[e._v("提供容器弹性,如果容器失效就替换它,等等...")])]),e._v(" "),r("h2",{attrs:{id:"集群"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#集群","aria-hidden":"true"}},[e._v("#")]),e._v(" 集群")]),e._v(" "),r("p",[e._v("集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台。下图展示这样的集群。注意该图为了强调核心概念有所简化。这里可以看到一个典型的Kubernetes架构图。")]),e._v(" "),r("p",[r("img",{attrs:{src:t(327),alt:"1.png"}})]),e._v(" "),r("p",[e._v("上图可以看到如下组件,使用特别的图标表示Service和Label:")]),e._v(" "),r("ul",[r("li",[e._v("PodContainer(容器)")]),e._v(" "),r("li",[e._v("Label("),r("img",{attrs:{src:t(328),alt:"label"}}),e._v(")(标签)")]),e._v(" "),r("li",[e._v("Replication Controller(复制控制器)")]),e._v(" "),r("li",[e._v("Service("),r("img",{attrs:{src:t(329),alt:"enter image description here"}}),e._v(")(服务)")]),e._v(" "),r("li",[e._v("Node(节点)")]),e._v(" "),r("li",[e._v("Kubernetes Master(Kubernetes主节点)")])]),e._v(" "),r("h2",{attrs:{id:"pod"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pod","aria-hidden":"true"}},[e._v("#")]),e._v(" Pod")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pod"),r("OutboundLink")],1),e._v("(上图绿色方框)安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。你可能会有这些问题:")]),e._v(" "),r("ul",[r("li",[e._v("如果Pod是短暂的,那么我怎么才能持久化容器数据使其能够跨重启而存在呢? 是的,Kubernetes支持 "),r("em",[r("strong",[e._v("卷")])]),e._v(" 的概念,因此可以使用持久化的卷类型。")]),e._v(" "),r("li",[e._v("是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么?可以手动创建单个Pod,但是也可以使用Replication Controller使用Pod模板创建出多份拷贝,下文会详细介绍。")]),e._v(" "),r("li",[e._v("如果Pod是短暂的,那么重启时IP地址可能会改变,那么怎么才能从前端容器正确可靠地指向后台容器呢?这时可以使用Service,下文会详细介绍。")])]),e._v(" "),r("h2",{attrs:{id:"label"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#label","aria-hidden":"true"}},[e._v("#")]),e._v(" Label")]),e._v(" "),r("p",[e._v("正如图所示,一些Pod有Label("),r("img",{attrs:{src:t(330),alt:"enter image description here"}}),e._v(')。一个Label是attach到Pod的一对键/值对,用来传递用户定义的属性。比如,你可能创建了一个"tier"和“app”标签,通过Label('),r("strong",[e._v("tier=frontend, app=myapp")]),e._v(")来标记前端Pod容器,使用Label("),r("strong",[e._v("tier=backend, app=myapp")]),e._v(")标记后台Pod。然后可以使用 "),r("a",{attrs:{href:"https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Selectors"),r("OutboundLink")],1),e._v(" 选择带有特定Label的Pod,并且将Service或者Replication Controller应用到上面。")]),e._v(" "),r("h2",{attrs:{id:"replication-controller"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#replication-controller","aria-hidden":"true"}},[e._v("#")]),e._v(" Replication Controller")]),e._v(" "),r("p",[r("em",[e._v("是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么,能否将Pods划到逻辑组里?")])]),e._v(" "),r("p",[e._v("Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3.如下面的动画所示:")]),e._v(" "),r("p",[r("img",{attrs:{src:t(331),alt:"2.gif"}})]),e._v(" "),r("p",[e._v("如果之前不响应的Pod恢复了,现在就有4个Pod了,那么Replication Controller会将其中一个终止保持总数为3。如果在运行中将副本总数改为5,Replication Controller会立刻启动2个新Pod,保证总数为5。还可以按照这样的方式缩小Pod,这个特性在执行滚动 "),r("a",{attrs:{href:"https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#rolling_updates",target:"_blank",rel:"noopener noreferrer"}},[e._v("升级"),r("OutboundLink")],1),e._v(" 时很有用。")]),e._v(" "),r("p",[e._v("当创建Replication Controller时,需要指定两个东西:")]),e._v(" "),r("ol",[r("li",[e._v("Pod模板:用来创建Pod副本的模板")]),e._v(" "),r("li",[e._v("Label:Replication Controller需要监控的Pod的标签。现在已经创建了Pod的一些副本,那么在这些副本上如何均衡负载呢?我们需要的是Service。")])]),e._v(" "),r("div",{staticClass:"tip custom-block"},[r("p",[e._v("最新 Kubernetes 版本里,推荐使用 Deployment")])]),e._v(" "),r("h2",{attrs:{id:"service"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#service","aria-hidden":"true"}},[e._v("#")]),e._v(" Service")]),e._v(" "),r("p",[r("em",[e._v("如果Pods是短暂的,那么重启时IP地址可能会改变,怎么才能从前端容器正确可靠地指向后台容器呢?")]),e._v(" "),r("a",{attrs:{href:"https://kubernetes.io/docs/concepts/services-networking/service/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Service"),r("OutboundLink")],1),e._v(" "),r("strong",[e._v("抽象")]),e._v("\n现在,假定有2个后台Pod,并且定义后台Service的名称为‘backend-service’,lable选择器为()。 的Service会完成如下两件重要的事情:")]),e._v(" "),r("ul",[r("li",[e._v("会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为 ‘backend-service’,就能够解析出前端应用程序可用的IP地址。")]),e._v(" "),r("li",[e._v("现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢?Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个(如下面的动画所示)。通过每个Node上运行的代理(kube-proxy)完成。")])]),e._v(" "),r("p",[e._v("下述动画展示了Service的功能。注意该图作了很多简化。如果不进入网络配置,那么达到透明的负载均衡目标所涉及的底层网络和路由相对先进。如果有兴趣,有更深入的介绍。")]),e._v(" "),r("p",[r("img",{attrs:{src:t(332),alt:"3.gif"}})]),e._v(" "),r("p",[e._v("每个节点都运行如下Kubernetes关键组件:")]),e._v(" "),r("ul",[r("li",[e._v("Kubelet:是主节点代理。")]),e._v(" "),r("li",[e._v("Kube-proxy:Service使用其将链接路由到Pod,如上文所述。")]),e._v(" "),r("li",[e._v("Docker或Rocket:Kubernetes使用的容器技术来创建容器。")])]),e._v(" "),r("h3",{attrs:{id:"kubernetes-master"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-master","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes Master")]),e._v(" "),r("p",[e._v("集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。")])])},[],!1,null,null,null);A.default=l.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/15.f69e0361.js b/docs/assets/js/15.f69e0361.js
deleted file mode 100644
index c40e082..0000000
--- a/docs/assets/js/15.f69e0361.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{111:function(t,a,_){t.exports=_.p+"assets/img/image-20190721110355464.25f25dda.png"},297:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112353077.b907aa89.png"},298:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112624128.7aa6b8f1.png"},299:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113050608.97e0f110.png"},300:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113155991.f3ecd62f.png"},372:function(t,a,_){"use strict";_.r(a);var v=_(0),e=Object(v.a)({},function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 配置")]),t._v(" "),v("p",[t._v("配置: Kubernetes ConfigMap")]),t._v(" "),v("h1",{attrs:{id:"查看配置列表"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看配置列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看配置列表")]),t._v(" "),v("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),v("p",[v("img",{attrs:{src:_(111),alt:"image-20190721110355464"}})]),t._v(" "),v("p",[t._v("配置列表位于图中左侧中部,点击 "),v("em",[v("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),v("blockquote",[v("p",[t._v("点击 "),v("strong",[t._v("配置")]),t._v(" 可以刷新该列表")])]),t._v(" "),v("p",[v("img",{attrs:{src:_(297),alt:"image-20190721112353077"}})]),t._v(" "),v("h1",{attrs:{id:"创建配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建配置")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("配置 / 创建")])])]),t._v(" "),v("p",[t._v("填写表单如下所示:")])])]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("字段名称")]),t._v(" "),v("th",[t._v("填写内容")]),t._v(" "),v("th",[t._v("说明")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 内容")]),t._v(" "),v("td",[t._v("configmap")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 名称")]),t._v(" "),v("td",[t._v("EUREKA_URL")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 内容")]),t._v(" "),v("td",[t._v("http://cloud-eureka:9200/eureka")]),t._v(" "),v("td")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(298),alt:"image-20190721112624128"}})]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("保存")])])]),t._v(" "),v("p",[t._v("配置信息创建成功")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(299),alt:"image-20190721113050608"}})]),t._v(" "),v("h1",{attrs:{id:"查看-编辑-删除-配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 配置")]),t._v(" "),v("ul",[v("li",[t._v("点击列表中的 "),v("em",[v("strong",[t._v("my-config-map")])])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(300),alt:"image-20190721113155991"}})]),t._v(" "),v("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/16.b573c9f3.js b/docs/assets/js/16.b573c9f3.js
deleted file mode 100644
index 1b7ae93..0000000
--- a/docs/assets/js/16.b573c9f3.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{111:function(t,a,v){t.exports=v.p+"assets/img/image-20190721110355464.25f25dda.png"},307:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113708689.f9b42a11.png"},308:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113810235.59d55672.png"},309:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114112644.526de44c.png"},310:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114211751.e1a07115.png"},375:function(t,a,v){"use strict";v.r(a);var _=v(0),e=Object(_.a)({},function(){var t=this,a=t.$createElement,_=t._self._c||a;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 存储卷声明")]),t._v(" "),_("p",[t._v("存储卷声明: Kubernetes Persistent Volume Claim")]),t._v(" "),_("h1",{attrs:{id:"查看存储卷声明列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看存储卷声明列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看存储卷声明列表")]),t._v(" "),_("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),_("p",[_("img",{attrs:{src:v(111),alt:"image-20190721110355464"}})]),t._v(" "),_("p",[t._v("存储卷声明列表位于图中左下角,点击 "),_("em",[_("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),_("blockquote",[_("p",[t._v("点击 "),_("strong",[t._v("存储卷声明")]),t._v(" 可以刷新该列表")])]),t._v(" "),_("p",[_("img",{attrs:{src:v(307),alt:"image-20190721113708689"}})]),t._v(" "),_("h1",{attrs:{id:"创建存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创建存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建存储卷声明")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("存储卷声明 / 创建")])])]),t._v(" "),_("p",[t._v("填写表单如下:")])])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("字段名称")]),t._v(" "),_("th",[t._v("填写内容")]),t._v(" "),_("th",[t._v("说明")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("存储卷声明")]),t._v(" "),_("td",[t._v("my-pvc")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("存储类")]),t._v(" "),_("td",[t._v("cluster-storage")]),t._v(" "),_("td",[t._v("如果不存在,则需要提前 "),_("a",{attrs:{href:"./guide/cluster/storage?id=%E5%88%9B%E5%BB%BA%E5%AD%98%E5%82%A8%E7%B1%BB"}},[t._v("创建存储类")])])]),t._v(" "),_("tr",[_("td",[t._v("分配模式")]),t._v(" "),_("td",[t._v("动态分配")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("读写模式")]),t._v(" "),_("td",[t._v("可被多节点读写")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("总量")]),t._v(" "),_("td",[t._v("2Gi")]),t._v(" "),_("td")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(308),alt:"image-20190721113810235"}})]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("保存")])])]),t._v(" "),_("p",[t._v("存储卷声明创建成功")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(309),alt:"image-20190721114112644"}})]),t._v(" "),_("h1",{attrs:{id:"查看-编辑-删除-存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 存储卷声明")]),t._v(" "),_("ul",[_("li",[t._v("点击 "),_("em",[_("strong",[t._v("my-pvc")])])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(310),alt:"image-20190721114211751"}})]),t._v(" "),_("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/17.da6085e6.js b/docs/assets/js/17.da6085e6.js
deleted file mode 100644
index 4788e4a..0000000
--- a/docs/assets/js/17.da6085e6.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{111:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110355464.25f25dda.png"},311:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110543437.8cbe188d.png"},312:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111011798.b9cc73b4.png"},313:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111540512.b0a58451.png"},314:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111642221.f9c06dc3.png"},378: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(111),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(311),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(312),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(313),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(314),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/18.14596f73.js b/docs/assets/js/18.14596f73.js
deleted file mode 100644
index 710ae7c..0000000
--- a/docs/assets/js/18.14596f73.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{112:function(s,t,e){s.exports=e.p+"assets/img/image-20190715085036593.55559549.png"},113:function(s,t,e){s.exports=e.p+"assets/img/image2019-07-15_09.01.21.0e0d34f2.png"},336:function(s,t,e){s.exports=e.p+"assets/img/image-20190726214032585.f5bc62e4.png"},337:function(s,t,e){s.exports=e.p+"assets/img/image-20190715101542756.5934c00e.png"},338:function(s,t,e){s.exports=e.p+"assets/img/image-20190715193838012.eca23618.png"},360:function(s,t,e){"use strict";e.r(t);var a=e(0),r=Object(a.a)({},function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安装-kubernetes-单master节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-kubernetes-单master节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Kubernetes 单Master节点")]),s._v(" "),a("p",[s._v("对于 Kubernetes 初学者,推荐在阿里云采购如下配置:")]),s._v(" "),a("ul",[a("li",[s._v("3台 2核4G 的ECS(突发性能实例 t5 ecs.t5-c1m2.large或同等配置,单台约 0.4元/小时,停机时不收费)")]),s._v(" "),a("li",[s._v("Cent OS 7.6")])]),s._v(" "),a("p",[a("a",{attrs:{href:"https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=obezo3pg",target:"_blank",rel:"noopener noreferrer"}},[s._v("领取阿里云最高2000元红包"),a("OutboundLink")],1)]),s._v(" "),a("p",[s._v("Kuboard 的 Live Demo 环境使用的是如下拓扑结构,本文档描述了如何在完成该 demo 环境的搭建。")]),s._v(" "),a("p",[s._v("完成安装后,对应的软件版本为:")]),s._v(" "),a("ul",[a("li",[s._v("Kubernetes v1.15.0")]),s._v(" "),a("li",[s._v("Docker 18.09.7")])]),s._v(" "),a("p",[a("img",{attrs:{src:e(336),alt:"image-20190726214032585"}})]),s._v(" "),a("h2",{attrs:{id:"制作标准机镜像"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#制作标准机镜像","aria-hidden":"true"}},[s._v("#")]),s._v(" 制作标准机镜像")]),s._v(" "),a("p",[s._v("通过使用标准机镜像,可以")]),s._v(" "),a("ul",[a("li",[a("strong",[s._v("避免重复执行对测试机安装必要软件的过程")])]),s._v(" "),a("li",[a("strong",[s._v("以一种相对标准化的过程管理测试机的维护")])])]),s._v(" "),a("p",[s._v("标准机镜像中预装了如下内容:")]),s._v(" "),a("ul",[a("li",[s._v("docker")]),s._v(" "),a("li",[s._v("nfs-utils")]),s._v(" "),a("li",[s._v("kubernetes images")])]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("您也可以不制作标准机镜像,而是在三台机器上都执行 "),a("em",[a("strong",[s._v("制作标准机镜像")])]),s._v(" 中的所有操作步骤")])])]),s._v(" "),a("p",[a("strong",[s._v("标准机镜像的制作过程描述如下:")])]),s._v(" "),a("h3",{attrs:{id:"安装docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装docker","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装docker")]),s._v(" "),a("p",[a("strong",[s._v("卸载旧版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum remove docker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-common "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine\n")])])]),a("p",[a("strong",[s._v("下载依赖包及安装包")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.7-3.el7.x86_64.rpm\n")])])]),a("p",[a("strong",[s._v("安装")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" docker\n")])])]),a("p",[a("strong",[s._v("启动 docker 服务")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl start docker\n")])])]),a("p",[a("strong",[s._v("检查 docker 版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker version\n")])])]),a("blockquote",[a("p",[a("strong",[s._v("参考文档")])]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/docker-ce/centos/")]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/linux-postinstall/")])]),s._v(" "),a("h3",{attrs:{id:"安装-nfs-utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-nfs-utils","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 nfs-utils")]),s._v(" "),a("p",[a("strong",[s._v("执行安装命令")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y nfs-utils\n")])])]),a("p",[s._v("必须先安装 nfs-utils 才能挂载 nfs 网络存储")]),s._v(" "),a("h3",{attrs:{id:"k8s基本配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#k8s基本配置","aria-hidden":"true"}},[s._v("#")]),s._v(" K8S基本配置")]),s._v(" "),a("p",[a("strong",[s._v("配置K8S的yum源")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("EOF "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/yum.repos.d/kubernetes.repo\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("kubernetes"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("name")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Kubernetes\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("baseurl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("enabled")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("repo_gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgkey")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg\n http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg\nEOF\n")])])]),a("p",[a("strong",[s._v("关闭 防火墙、SeLinux、swap")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl stop firewalld\nsystemctl disable firewalld\n\nsetenforce "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sed")]),s._v(" -i "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"s/SELINUX=enforcing/SELINUX=disabled/g"')]),s._v(" /etc/selinux/config\n\nswapoff -a\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" /etc/fstab /etc/fstab_bak\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /etc/fstab_bak "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("grep")]),s._v(" -v swap "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/fstab\n")])])]),a("p",[a("strong",[s._v("修改 /etc/sysctl.conf")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/sysctl.conf\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("net.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(112),alt:"image-20190715085036593",title:":size=600x445"}})]),s._v(" "),a("p",[s._v("执行命令以应用")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsysctl -p\n")])])]),a("p",[a("strong",[s._v("安装kubelet、kubeadm、kubectl")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nyum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0\n")])])]),a("p",[a("strong",[s._v("修改docker Cgroup Driver为systemd")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /usr/lib/systemd/system/docker.service\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("--exec-opt native.cgroupdriver=systemd\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(113),alt:"屏幕快照 2019-07-15 09.01.21",title:":size=1000x326"}})]),s._v(" "),a("p",[s._v("重启 docker")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl daemon-reload\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("启动kubelet")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" kubelet "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" systemctl start kubelet\n")])])]),a("p",[a("strong",[s._v("加载 kubernetes 镜像")])]),s._v(" "),a("p",[s._v("由于k8s服务相关镜像在国外镜像源,国内无法访问")]),s._v(" "),a("p",[s._v("执行以下命令添加docker k8s国内镜像源")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sSL https://get.daocloud.io/daotools/set_mirror.sh "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sh")]),s._v(" -s http://f1361db2.m.daocloud.io\n\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("拉取k8s相关镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker pull mirrorgooglecontainers/kube-apiserver:v1.15.0\ndocker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0\ndocker pull mirrorgooglecontainers/kube-scheduler:v1.15.0\ndocker pull mirrorgooglecontainers/kube-proxy:v1.15.0\ndocker pull mirrorgooglecontainers/pause:3.1\ndocker pull mirrorgooglecontainers/etcd:3.3.10\ndocker pull coredns/coredns:1.3.1\n")])])]),a("p",[a("strong",[s._v("更改镜像名为k8s官网镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker tag d235b23c3570 k8s.gcr.io/kube-proxy:v1.15.0\ndocker tag 201c7a840312 k8s.gcr.io/kube-apiserver:v1.15.0\ndocker tag 2d3813851e87 k8s.gcr.io/kube-scheduler:v1.15.0\ndocker tag 8328bb49b652 k8s.gcr.io/kube-controller-manager:v1.15.0\ndocker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1\ndocker tag eb516548c180 k8s.gcr.io/coredns:1.3.1\ndocker tag 2c4adeb21b4f k8s.gcr.io/etcd:3.3.10\n")])])]),a("p",[a("strong",[s._v("制作镜像")])]),s._v(" "),a("p",[s._v("请参考阿里云基于ECS "),a("a",{attrs:{href:"https://help.aliyun.com/document_detail/35109.html?spm=5176.2020520101.0.0.75fc4df5mtdFmV",target:"_blank",rel:"noopener noreferrer"}},[s._v("制作虚拟机镜像"),a("OutboundLink")],1),s._v(" 的文档")]),s._v(" "),a("h2",{attrs:{id:"初始化-master-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-master-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 master 节点")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("以 root 身份在 demo-master-a-1 机器上执行")])]),s._v(" "),a("p",[a("strong",[s._v("配置 apiserver.demo 的域名")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\n")])])]),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("请替换其中的 x.x.x.x 为您的 demo-master-a-1 的实际 ip 地址")])]),s._v(" "),a("p",[a("strong",[s._v("创建 ./kubeadm-config.yaml")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" ./kubeadm-config.yaml\n")])])]),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("apiVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" kubeadm.k8s.io/v1beta1\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kind")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" ClusterConfiguration\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kubernetesVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" v1.15.0\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("controlPlaneEndpoint")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"apiserver.demo:6443"')]),s._v("\n\n")])])]),a("p",[a("strong",[s._v("初始化 apiserver")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm init --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("kubeadm-config.yaml --upload-certs\n")])])]),a("p",[s._v("执行结果如下图所示:")]),s._v(" "),a("p",[a("img",{attrs:{src:e(337),alt:"image-20190715101542756",title:":size=800x388"}})]),s._v(" "),a("p",[a("strong",[s._v("初始化 root 用户的 kubectl 配置")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" -rf /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" -i /etc/kubernetes/admin.conf /root/.kube/config\n")])])]),a("p",[a("strong",[s._v("安装 calico")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml\n")])])]),a("blockquote",[a("p",[s._v("安装calico, 请参考https://docs.projectcalico.org/v3.6/getting-started/kubernetes/")])]),s._v(" "),a("p",[a("strong",[s._v("等待calico安装就绪:")])]),s._v(" "),a("p",[s._v("执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("watch")]),s._v(" kubectl get pod -n kube-system\n")])])]),a("p",[a("strong",[s._v("检查 master 初始化结果")])]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("h2",{attrs:{id:"初始化-worker节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-worker节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 worker节点")]),s._v(" "),a("h3",{attrs:{id:"获得-join命令参数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获得-join命令参数","aria-hidden":"true"}},[s._v("#")]),s._v(" 获得 join命令参数")]),s._v(" "),a("p",[a("strong",[s._v("在 master 节点 demo-master-a-1 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm token create --print-join-command\n")])])]),a("p",[s._v("可获取kubeadm join 命令及参数,如下所示")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# kubeadm token create 命令的输出")]),s._v("\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("h3",{attrs:{id:"初始化worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化worker","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化worker")]),s._v(" "),a("p",[a("strong",[s._v("针对所有的 worker 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 x.x.x.x 替换为 demo-master-a-1 的实际 ip")]),s._v(" "),a("li",[s._v("将 kubeadm join 命令后的参数替换为上一个步骤中实际从 demo-master-a-1 节点获得的参数")])])]),s._v(" "),a("h3",{attrs:{id:"检查初始化结果"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#检查初始化结果","aria-hidden":"true"}},[s._v("#")]),s._v(" 检查初始化结果")]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("p",[a("img",{attrs:{src:e(338),alt:"image-20190715193838012"}})]),s._v(" "),a("h2",{attrs:{id:"移除-worker-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#移除-worker-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 移除 worker 节点")]),s._v(" "),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("正常情况下,您无需移除 worker 节点,如果添加到集群出错,您可以移除 worker 节点,再重新尝试添加")])]),s._v(" "),a("p",[s._v("在准备移除的 worker 节点上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\nkubeadm reset\n")])])]),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl delete node demo-worker-x-x\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 demo-worker-x-x 替换为要移除的 worker 节点的名字")]),s._v(" "),a("li",[s._v("worker 节点的名字可以通过在节点 demo-master-a-1 上执行 kubectl get nodes 命令获得")])])]),s._v(" "),a("h2",{attrs:{id:"安装-ingress-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-ingress-controller","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Ingress Controller")]),s._v(" "),a("blockquote",[a("p",[s._v("Ingress官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/")]),s._v(" "),a("p",[s._v("Ingress Controllers官网介绍:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/")]),s._v(" "),a("p",[s._v("本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge")]),s._v(" "),a("p",[s._v("kubernetes支持多种Ingress Controllers,本文推荐使用 https://github.com/nginxinc/kubernetes-ingress")])]),s._v(" "),a("p",[a("strong",[s._v("在 demo-master-a-1 上执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml\n")])])]),a("p",[a("strong",[s._v("配置域名解析")])]),s._v(" "),a("p",[s._v("将域名 *.demo.yourdomain.com 解析到 demo-worker-a-2 的 IP 地址 z.z.z.z (也可以是 demo-worker-a-1 的地址 y.y.y.y)")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("由于需要申请域名,过程会比较繁琐,有如下两种替代方案:")]),s._v(" "),a("ul",[a("li",[s._v("在您的客户端机器(访问部署在K8S上的 web 应用的浏览器所在的机器)设置 hosts 配置;")]),s._v(" "),a("li",[s._v("暂时放弃域名的配置,临时使用 NodePort 或者 "),a("code",[s._v("kubectl port-forward")]),s._v(" 的方式访问部署在 K8S 上的 web 应用")])])]),s._v(" "),a("p",[a("strong",[s._v("验证配置")])]),s._v(" "),a("p",[s._v("在浏览器访问 a.demo.yourdomain.com,将得到 404 NotFound 错误页面")]),s._v(" "),a("h2",{attrs:{id:"下一步"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#下一步","aria-hidden":"true"}},[s._v("#")]),s._v(" 下一步")]),s._v(" "),a("p",[s._v("🎉 🎉 🎉")]),s._v(" "),a("p",[s._v("您已经完成了 Kubernetes 集群的安装,下一步请:")]),s._v(" "),a("p",[a("a",{attrs:{href:"/install/install-dashboard"}},[s._v("安装 Kuboard")])])])},[],!1,null,null,null);t.default=r.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/19.99531f86.js b/docs/assets/js/19.99531f86.js
deleted file mode 100644
index 35e1387..0000000
--- a/docs/assets/js/19.99531f86.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{106:function(e,r,a){e.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},146:function(e,r,a){e.exports=a.p+"assets/img/image-20190728145108904.8f9c0d1d.png"},333:function(e,r,a){e.exports=a.p+"assets/img/image-20190721154650916.3f63fdcb.jpg"},334:function(e,r,a){e.exports=a.p+"assets/img/image-20190723105039358.91eef75a.png"},335:function(e,r,a){e.exports=a.p+"assets/img/image-20190721000759925.bb32a332.png"},363: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(146),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(333),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(334),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(335),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(106),alt:"Kuboard QQ 群"}})])])},[],!1,null,null,null);r.default=s.exports}}]);
\ No newline at end of file
diff --git a/docs/assets/js/2.dd0e1f2c.js b/docs/assets/js/2.dd0e1f2c.js
deleted file mode 100644
index e96bfa4..0000000
--- a/docs/assets/js/2.dd0e1f2c.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],Array(104).concat([function(t,e,n){"use strict";n.d(e,"d",function(){return r}),n.d(e,"a",function(){return s}),n.d(e,"i",function(){return o}),n.d(e,"f",function(){return u}),n.d(e,"g",function(){return c}),n.d(e,"h",function(){return l}),n.d(e,"b",function(){return f}),n.d(e,"e",function(){return h}),n.d(e,"k",function(){return p}),n.d(e,"l",function(){return d}),n.d(e,"c",function(){return v}),n.d(e,"j",function(){return g});const r=/#.*$/,i=/\.(md|html)$/,s=/\/$/,o=/^(https?:|mailto:|tel:)/;function a(t){return decodeURI(t).replace(r,"").replace(i,"")}function u(t){return o.test(t)}function c(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function f(t){if(u(t))return t;const e=t.match(r),n=e?e[0]:"",i=a(t);return s.test(i)?t:i+".html"+n}function h(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);return(!i||n===i)&&a(t.path)===a(e)}function p(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const s=t.replace(/^\//,"").split("/");for(let t=0;t
({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const a=o.sidebar||s.sidebar;if(a){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,a);return n?n.map(e=>(function t(e,n,r,i=1){if("string"==typeof e)return p(n,e,r);if(Array.isArray(e))return Object.assign(p(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const s=e.children||[];return 0===s.length&&e.path?Object.assign(p(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:s.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}})(e,i,t)):[]}return[]}function v(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},function(t,e,n){var r=n(154)("wks"),i=n(155),s=n(33).Symbol,o="function"==typeof s;(t.exports=function(t){return r[t]||(r[t]=o&&s[t]||(o?s:i)("Symbol."+t))}).store=r},,function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(1),i=n(37)(3);r(r.P+r.F*!n(22)([].some,!0),"Array",{some:function(t){return i(this,t,arguments[1])}})},function(t,e){t.exports={}},function(t,e,n){var r=n(9).f,i=n(8),s=n(17)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,s)&&r(t,s,{configurable:!0,value:e})}},,,,function(t,e,n){"use strict";n(115),n(116),n(108),n(124);var r=n(104),i={props:{item:{required:!0}},computed:{link:function(){return Object(r.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some(function(e){return e===t.link}):"/"===this.link}},methods:{isExternal:r.f,isMailto:r.g,isTel:r.h}},s=n(0),o=Object(s.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isExternal(t.link)?n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),n("OutboundLink")],1):n("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text))])},[],!1,null,null,null);e.a=o.exports},function(t,e,n){for(var r=n(117),i=n(56),s=n(19),o=n(2),a=n(18),u=n(107),c=n(17),l=c("iterator"),f=c("toStringTag"),h=u.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=i(p),v=0;v=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),s.Arguments=s.Array,r("keys"),r("values"),r("entries")},function(t,e,n){var r=n(17)("unscopables"),i=Array.prototype;null==i[r]&&n(18)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(61),i=n(1),s=n(19),o=n(18),a=n(107),u=n(121),c=n(110),l=n(122),f=n(17)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,_,x,y=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",L="values"==v,S=!1,C=t.prototype,$=C[f]||C["@@iterator"]||v&&C[v],w=$||y(v),O=v?L?y("entries"):w:void 0,T="Array"==e&&C.entries||$;if(T&&(x=l(T.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||o(x,f,p)),L&&$&&"values"!==$.name&&(S=!0,w=function(){return $.call(this)}),r&&!m||!h&&!S&&C[f]||o(C,f,w),a[e]=w,a[k]=p,v)if(b={values:L?w:y("values"),keys:g?w:y("keys"),entries:O},m)for(_ in b)_ in C||s(C,_,b[_]);else i(i.P+i.F*(h||S),e,b);return b}},function(t,e,n){"use strict";var r=n(62),i=n(35),s=n(110),o={};n(18)(o,n(17)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),s(t,e+" Iterator")}},function(t,e,n){var r=n(8),i=n(32),s=n(36)("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},function(t,e,n){var r=n(1),i=n(21),s=n(5);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*s(function(){n(1)}),"Object",o)}},function(t,e,n){"use strict";n(125)("link",function(t){return function(e){return t(this,"a","href",e)}})},function(t,e,n){var r=n(1),i=n(5),s=n(7),o=/"/g,a=function(t,e,n,r){var i=String(s(t)),a="<"+e;return""!==n&&(a+=" "+n+'="'+String(r).replace(o,""")+'"'),a+">"+i+""+e+">"};t.exports=function(t,e){var n={};n[t]=e(a),r(r.P+r.F*i(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(183),i=n(131);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(154)("keys"),i=n(155);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},,function(t,e,n){},,,,,,,function(t,e,n){"use strict";var r=n(6),i=n(23),s=n(70),o=n(71);n(72)("match",1,function(t,e,n,a){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var u=r(t),c=String(this);if(!u.global)return o(u,c);var l=u.unicode;u.lastIndex=0;for(var f,h=[],p=0;null!==(f=o(u,c));){var d=String(f[0]);h[p]=d,""===d&&(u.lastIndex=s(c,i(u.lastIndex),l)),p++}return 0===p?null:h}]})},function(t,e,n){"use strict";var r=n(176)(!0);n(151)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";var r=n(152),i=n(58),s=n(177),o=n(57),a=n(109),u=n(178),c=n(157),l=n(187),f=n(105)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,_,x,y=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",L="values"==v,S=!1,C=t.prototype,$=C[f]||C["@@iterator"]||v&&C[v],w=$||y(v),O=v?L?y("entries"):w:void 0,T="Array"==e&&C.entries||$;if(T&&(x=l(T.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||o(x,f,p)),L&&$&&"values"!==$.name&&(S=!0,w=function(){return $.call(this)}),r&&!m||!h&&!S&&C[f]||o(C,f,w),a[e]=w,a[k]=p,v)if(b={values:L?w:y("values"),keys:g?w:y("keys"),entries:O},m)for(_ in b)_ in C||s(C,_,b[_]);else i(i.P+i.F*(h||S),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var r=n(130),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(31),i=n(33),s=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(152)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(34).f,i=n(60),s=n(105)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,s)&&r(t,s,{configurable:!0,value:e})}},function(t,e,n){var r=n(131);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(129),i=n(105)("toStringTag"),s="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:s?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},,function(t,e,n){"use strict";n.r(e);n(108);var r=n(104),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(162).a},beforeCreate:function(){this.$options.components.SidebarLinks=n(161).default},methods:{isActive:r.e}},s=(n(206),n(0)),o=Object(s.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,sidebarDepth:t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)},[],!1,null,null,null).exports;n(64);function a(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,s){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||o>s?null:t("ul",{class:"sidebar-sub-headers"},e.map(function(e){var c=Object(r.e)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[a(t,n+"#"+e.slug,e.title,c),u(t,e.children,n,i,s,o+1)])}))}var c={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,i=n.$page,s=(n.$site,n.$route),o=n.$themeConfig,c=n.$themeLocaleConfig,l=e.props,f=l.item,h=l.sidebarDepth,p=Object(r.e)(s,f.path),d="auto"===f.type?p||f.children.some(function(t){return Object(r.e)(s,f.basePath+"#"+t.slug)}):p,v="external"===f.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,f.path,f.title||f.path):a(t,f.path,f.title||f.path,d),g=i.frontmatter.sidebarDepth||h||c.sidebarDepth||o.sidebarDepth,m=null==g?1:g,b=c.displayAllHeaders||o.displayAllHeaders;return"auto"===f.type?[v,u(t,f.children,f.basePath,s,m)]:(d||b)&&f.headers&&!r.d.test(f.path)?[v,u(t,Object(r.c)(f.headers),f.path,s,m)]:v}};n(207);var l={name:"SidebarLinks",components:{SidebarGroup:o,SidebarLink:Object(s.a)(c,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},created:function(){this.refreshIndex()},watch:{$route:function(){this.refreshIndex()}},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(r.e)(this.$route,t.regularPath)}}},f=Object(s.a)(l,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,function(e,r){return n("li",{key:r},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:r===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):n("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:e}})],1)}),0):t._e()},[],!1,null,null,null);e.default=f.exports},function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},i=(n(201),n(0)),s=Object(i.a)(r,function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)},[],!1,null,null,null);e.a=s.exports},function(t,e,n){"use strict";var r=n(126);n.n(r).a},function(t,e,n){"use strict";n(67)("trim",function(t){return function(){return t(this,3)}})},function(t,e,n){"use strict";var r=n(127);n.n(r).a},function(t,e,n){"use strict";var r=n(128);n.n(r).a},function(t,e,n){var r=n(2),i=n(65),s=n(9).f,o=n(66).f,a=n(168),u=n(73),c=r.RegExp,l=c,f=c.prototype,h=/a/g,p=/a/g,d=new c(h)!==h;if(n(3)&&(!d||n(5)(function(){return p[n(17)("match")]=!1,c(h)!=h||c(p)==p||"/a/i"!=c(h,"i")}))){c=function(t,e){var n=this instanceof c,r=a(t),s=void 0===e;return!n&&r&&t.constructor===c&&s?t:i(d?new l(r&&!s?t.source:t,e):l((r=t instanceof c)?t.source:t,r&&s?u.call(t):e),n?this:f,c)};for(var v=function(t){t in c||s(c,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})},g=o(l),m=0;g.length>m;)v(g[m++]);f.constructor=c,c.prototype=f,n(19)(r,"RegExp",c)}n(169)("RegExp")},function(t,e,n){var r=n(4),i=n(10),s=n(17)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[s])?!!e:"RegExp"==i(t))}},function(t,e,n){"use strict";var r=n(2),i=n(9),s=n(3),o=n(17)("species");t.exports=function(t){var e=r[t];s&&e&&!e[o]&&i.f(e,o,{configurable:!0,get:function(){return this}})}},function(t,e,n){t.exports=n(171)},function(t,e,n){n(172),t.exports=n(31).Array.isArray},function(t,e,n){var r=n(58);r(r.S,"Array",{isArray:n(173)})},function(t,e,n){var r=n(129);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){t.exports=n(175)},function(t,e,n){n(150),n(188),t.exports=n(31).Array.from},function(t,e,n){var r=n(130),i=n(131);t.exports=function(t){return function(e,n){var s,o,a=String(i(e)),u=r(n),c=a.length;return u<0||u>=c?t?"":void 0:(s=a.charCodeAt(u))<55296||s>56319||u+1===c||(o=a.charCodeAt(u+1))<56320||o>57343?t?a.charAt(u):s:t?a.slice(u,u+2):o-56320+(s-55296<<10)+65536}}},function(t,e,n){t.exports=n(57)},function(t,e,n){"use strict";var r=n(179),i=n(63),s=n(157),o={};n(57)(o,n(105)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),s(t,e+" Iterator")}},function(t,e,n){var r=n(59),i=n(180),s=n(156),o=n(133)("IE_PROTO"),a=function(){},u=function(){var t,e=n(69)("iframe"),r=s.length;for(e.style.display="none",n(186).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("