v1.0.3-beta.2
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
<div style="margin-bottom: 10px;">github star 后,本窗口将不再弹出</div> -->
|
<div style="margin-bottom: 10px;">github star 后,本窗口将不再弹出</div> -->
|
||||||
</div>
|
</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="waitAMoment">一会儿再说</el-button>
|
<el-button @click="reset">一会儿再说</el-button>
|
||||||
<el-button type="primary" @click="gotoStar">够义气,现在就去!</el-button>
|
<el-button type="primary" @click="gotoStar">够义气,现在就去!</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@@ -28,8 +28,9 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import 'element-ui/lib/theme-chalk/index.css';
|
import 'element-ui/lib/theme-chalk/index.css'
|
||||||
import { Dialog, Button } from 'element-ui';
|
import { Dialog, Button } from 'element-ui'
|
||||||
|
import { differenceInMinutes } from 'date-fns'
|
||||||
|
|
||||||
Vue.component(Dialog.name, Dialog)
|
Vue.component(Dialog.name, Dialog)
|
||||||
Vue.component(Button.name, Button)
|
Vue.component(Button.name, Button)
|
||||||
@@ -41,24 +42,63 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.waitAMoment()
|
if (localStorage.getItem('stared') === 'true') {
|
||||||
|
console.log('已经去过 GITHUB')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setInterval(this.checkDuration, 10000)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
waitAMoment() {
|
checkDuration() {
|
||||||
this.dialogVisible = false
|
let firstAccess = localStorage.getItem('FIRST_ACCESS')
|
||||||
|
// console.log(new Date(), new Date(firstAccess))
|
||||||
|
if (!firstAccess) {
|
||||||
|
console.log('FIRST_ACCESS', new Date())
|
||||||
|
localStorage.setItem('FIRST_ACCESS', new Date())
|
||||||
|
} else {
|
||||||
|
// console.log('differenceInMinutes', differenceInMinutes(new Date(), new Date(firstAccess)))
|
||||||
|
if (differenceInMinutes(new Date(), new Date(firstAccess)) >= 10 && !this.dialogVisible) {
|
||||||
|
this.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show () {
|
||||||
|
this.dialogVisible = true
|
||||||
if (localStorage.getItem('stared') === 'true') {
|
if (localStorage.getItem('stared') === 'true') {
|
||||||
|
console.log('已经去过 GITHUB')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let _this = this
|
if (window.ga) {
|
||||||
setTimeout(_ => {
|
window.ga('send', {
|
||||||
_this.dialogVisible = true
|
hitType: 'event',
|
||||||
// }, 10000)
|
eventCategory: 'StarGazer',
|
||||||
}, 60000 * 2)
|
eventAction: 'Show',
|
||||||
|
eventLabel: '显示 StarGazer'
|
||||||
|
});
|
||||||
|
console.log('发送成功 ga event')
|
||||||
|
} else {
|
||||||
|
console.log('开发环境,不发送 ga event')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reset () {
|
||||||
|
localStorage.removeItem('FIRST_ACCESS')
|
||||||
|
this.dialogVisible = false
|
||||||
},
|
},
|
||||||
gotoStar() {
|
gotoStar() {
|
||||||
this.dialogVisible = false
|
this.dialogVisible = false
|
||||||
window.open('https://github.com/eip-work/kuboard-press')
|
window.open('https://github.com/eip-work/kuboard-press')
|
||||||
localStorage.setItem('stared', 'true')
|
localStorage.setItem('stared', 'true')
|
||||||
|
if (window.ga) {
|
||||||
|
window.ga('send', {
|
||||||
|
hitType: 'event',
|
||||||
|
eventCategory: 'StarGazer',
|
||||||
|
eventAction: 'Click',
|
||||||
|
eventLabel: '前往 github'
|
||||||
|
});
|
||||||
|
console.log('发送成功 ga event')
|
||||||
|
} else {
|
||||||
|
console.log('开发环境,不发送 ga event')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
let dateFns = require('date-fns')
|
let dateFns = require('date-fns')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
title: 'Kuboard - Kubernetes k8s 安装/部署/入门/免费教程/实践/微服务管理界面',
|
title: 'Kuboard - Kubernetes k8s 国内安装/部署/入门/免费中文教程/实践/微服务管理界面',
|
||||||
description: '一个非常 cool 的 Kubernetes Dashboard,简化 Kubernetes 的学习和使用,帮助您快速落地 Kubernetes;同时提供 Spring Cloud 微服务部署教程,DevOps教程',
|
description: '一个非常 cool 的 Kubernetes Dashboard,简化 Kubernetes 的学习和使用,帮助您快速落地 Kubernetes;提供 Kubernetes 免费中文教程、国内安装文档',
|
||||||
head: [
|
head: [
|
||||||
['meta', {name: 'keywords', content: 'Kubernetes, Docker, Dashboard, Kuboard, Spring Cloud, micro service, DevOps, 微服务, 持续构建集成, 容器, Kubernetes 教程, Kubernetes 入门, K8S 教程, K8S 入门, 微服务实践, Kubernetes 安装, K8S 安装, Kubernetes 安装, Kubernetes 部署'}],
|
['meta', {name: 'keywords', content: 'Kubernetes, Docker, Dashboard, Kuboard, Spring Cloud, micro service, DevOps, 微服务, 持续构建集成, Kubernetes 中文教程, Kubernetes 入门, K8S 教程, K8S 入门, 微服务实践, Kubernetes 国内安装, K8S 安装, Kubernetes 安装, Kubernetes 部署'}],
|
||||||
['script', {}, `
|
['script', {}, `
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function() {
|
(function() {
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
User-agent: *
|
|
||||||
Allow: /
|
|
||||||
@@ -2,23 +2,34 @@
|
|||||||
<header class="navbar">
|
<header class="navbar">
|
||||||
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')"/>
|
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')"/>
|
||||||
|
|
||||||
<router-link
|
<div style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden; max-width: calc(100vw - 120px);">
|
||||||
:to="$localePath"
|
<router-link
|
||||||
class="home-link"
|
:to="$localePath"
|
||||||
>
|
class="home-link noselect"
|
||||||
<img
|
|
||||||
class="logo"
|
|
||||||
v-if="$site.themeConfig.logo"
|
|
||||||
:src="$withBase($site.themeConfig.logo)"
|
|
||||||
:alt="$siteTitle"
|
|
||||||
>
|
>
|
||||||
<span
|
<img
|
||||||
ref="siteName"
|
class="logo"
|
||||||
class="site-name"
|
v-if="$site.themeConfig.logo"
|
||||||
v-if="$siteTitle"
|
:src="$withBase($site.themeConfig.logo)"
|
||||||
:class="{ 'can-hide': $site.themeConfig.logo }"
|
:alt="$siteTitle"
|
||||||
>Kuboard</span>
|
>
|
||||||
</router-link>
|
<span
|
||||||
|
ref="siteName"
|
||||||
|
class="site-name"
|
||||||
|
v-if="$siteTitle"
|
||||||
|
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||||
|
>Kuboard - </span>
|
||||||
|
</router-link>
|
||||||
|
<span class="home-link noselect" style="line-height: 2.2em; font-size: 1em; font-weight: 400;">
|
||||||
|
<a href="/learning/">
|
||||||
|
<span style="color: #42b983;">提供K8S免费教程</span>
|
||||||
|
</a>
|
||||||
|
<span style="color: #2c3e50;">|</span>
|
||||||
|
<a href="/support/#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E8%90%BD%E5%9C%B0%E5%92%A8%E8%AF%A2">
|
||||||
|
<span style="color: #007af5;">微服务落地咨询</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="links"
|
class="links"
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ description: 详细介绍如何将 Kuboard 升级到最新版本。
|
|||||||
|
|
||||||
## 最新版本
|
## 最新版本
|
||||||
|
|
||||||
稳定版: latest, v1.0.1
|
稳定版: latest, v1.0.2
|
||||||
发布日期: 2019-08-20
|
发布日期: 2019-09-01
|
||||||
|
|
||||||
测试版: v1.0.2-beta.5
|
测试版: v1.0.3-beta.2
|
||||||
发布日期: 2019-08-29
|
发布日期: 2019-09-15
|
||||||
|
|
||||||
[查看更新日志](/overview/change-log.html)
|
[查看更新日志](/overview/change-log.html)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
layout: LearningLayout
|
layout: LearningLayout
|
||||||
description: Kubernetes 免费教程
|
description: Kubernetes 免费中文教程
|
||||||
---
|
---
|
||||||
|
|
||||||
# Kubernetes 免费教程
|
# Kubernetes 免费中文教程
|
||||||
|
|
||||||
本教程的主要依据是:Kubernetes 官网文档,以及使用 Kubernetes 落地 Spring Cloud 微服务并投产的实战经验。适用人群:
|
本教程的主要依据是:Kubernetes 官网文档,以及使用 Kubernetes 落地 Spring Cloud 微服务并投产的实战经验。适用人群:
|
||||||
* Kubernetes 初学者
|
* Kubernetes 初学者
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ Kuboard 暂不支持 -->
|
|||||||
|
|
||||||
restartPolicy 将作用于 Pod 中的所有容器。kubelete 将在五分钟内,按照递延的时间间隔(10s, 20s, 40s ......)尝试重启已退出的容器,并在十分钟后再次启动这个循环,直到容器成功启动,或者 Pod 被删除。
|
restartPolicy 将作用于 Pod 中的所有容器。kubelete 将在五分钟内,按照递延的时间间隔(10s, 20s, 40s ......)尝试重启已退出的容器,并在十分钟后再次启动这个循环,直到容器成功启动,或者 Pod 被删除。
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
控制器 Deployment/StatefulSet/DaemonSet 中,只支持 Always 这一个选项,不支持 OnFailure 和 Never 选项。
|
||||||
|
:::
|
||||||
|
|
||||||
## 容器组的存活期
|
## 容器组的存活期
|
||||||
|
|
||||||
|
|||||||
28
overview/kuboard-vs-kubectl.md
Normal file
28
overview/kuboard-vs-kubectl.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
description: 为什么要使用 kuboard,而不是直接使用 kubectl?
|
||||||
|
---
|
||||||
|
|
||||||
|
# 为什么要使用 Kuboard,而不是直接用 kubectl
|
||||||
|
|
||||||
|
## Kuboard v.s. kubectl
|
||||||
|
|
||||||
|
Kuboard 有如下优势:
|
||||||
|
* 无需编写 YAML 文件
|
||||||
|
* 轻松支持多环境管理
|
||||||
|
* 纯图形化使用
|
||||||
|
|
||||||
|
Kuboard 有如下限制:
|
||||||
|
* 并不能 100% 覆盖 kubectl 的功能
|
||||||
|
* 当前不支持 istio
|
||||||
|
* 当前不支持某些不常用配置(Bare Pod/ReplicaSet/ReplicationController/TTL Controller 等)
|
||||||
|
* 要求 Workload (Deployment/StatefulSet/DaemonSet)、Service、Ingress 的 `.metadata.name` 相同
|
||||||
|
|
||||||
|
## Kuboard 是一个非常优秀的解决方案
|
||||||
|
|
||||||
|
Kuboard + Kubernetes 已经在许多项目中成功交付投产了 Spring Cloud / Dubbo 等微服务架构。
|
||||||
|
|
||||||
|
### 技术人员的考量
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 项目管理者的考量
|
||||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -3262,7 +3262,7 @@
|
|||||||
},
|
},
|
||||||
"date-fns": {
|
"date-fns": {
|
||||||
"version": "1.30.1",
|
"version": "1.30.1",
|
||||||
"resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz",
|
"resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1568330251089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz",
|
||||||
"integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=",
|
"integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,22 +1,9 @@
|
|||||||
## v1.0.3-beta.2
|
|
||||||
|
|
||||||
**发布日期**
|
|
||||||
|
|
||||||
**新特性**
|
|
||||||
|
|
||||||
|
|
||||||
**BUG 修复**
|
|
||||||
|
|
||||||
* 导入应用程序时,NodePort 的值丢失
|
|
||||||
* 导出应用程序时,环境变量-容器组信息丢失
|
|
||||||
|
|
||||||
|
|
||||||
* 存储卷声明去掉分配模式的字段
|
* 存储卷声明去掉分配模式的字段
|
||||||
* 存储卷声明增加 Volume Modes 字段
|
|
||||||
* 存储卷声明将 读写模式 修改为 Access Modes
|
|
||||||
* 删除容器组时 - graceful period
|
* 删除容器组时 - graceful period
|
||||||
* Pod Conditions: lastProbeTime/reason/message
|
* Pod Conditions: lastProbeTime/reason/message
|
||||||
* Pod restartPolicy
|
* 按名称空间查看 Events
|
||||||
* 初始化容器不支持就绪检查
|
* 显示 Deployment/StatefulSet/DaemonSet 的事件
|
||||||
* Service 配置里,一部分 端口用 NodePort, 一部分端口用 ClusterIP
|
* 控制台/日志界面,按 名称空间/工作负载/Pod/容器 进行切换
|
||||||
* 互联网访问入口,增加文档的链接
|
|
||||||
|
|||||||
@@ -6,6 +6,37 @@ description: 本文描述了 Kuboard v1.0.x 的版本变更说明
|
|||||||
|
|
||||||
Kuboard v1.0.x 的更新说明
|
Kuboard v1.0.x 的更新说明
|
||||||
|
|
||||||
|
## v1.0.3-beta.2
|
||||||
|
|
||||||
|
**发布日期**
|
||||||
|
|
||||||
|
2019年9月15日
|
||||||
|
|
||||||
|
**新特性**
|
||||||
|
* Pod,显示重启策略 restartPolicy
|
||||||
|
* 工作负载编辑器 --> 容器组,可选择重启策略(只能选 Always)
|
||||||
|
|
||||||
|
**优化**
|
||||||
|
* 导入应用程序时,可调整 NodePort(上一个版本中,为了避免在同一个集群导入时出现NodePort冲突,直接忽略了源文件中的 NodePort)
|
||||||
|
* 工作负载编辑器 --> 数据卷,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> Ingress,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> Ingress,域名和路由配置为必填字段
|
||||||
|
* 工作负载编辑器 --> 初始化容器,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> 初始化容器,不显示就绪检查
|
||||||
|
* 工作负载编辑器 --> 资源限制,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> 容器 --> 存活检查/就绪检查,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> Docker 仓库的用户名密码,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> 节点选择,增加帮助链接
|
||||||
|
* 工作负载编辑器 --> 服务描述,可以不填写
|
||||||
|
* 存储卷声明,增加 Volume Modes 字段(只读)
|
||||||
|
* 存储卷声明,增加 Volume Name 字段(只读)
|
||||||
|
|
||||||
|
|
||||||
|
**BUG 修复**
|
||||||
|
|
||||||
|
* 导入工作负载 --> Ingress页,域名字段 '--必须修改域名--' 不应该出现多次
|
||||||
|
|
||||||
|
|
||||||
## v1.0.3-beta.1
|
## v1.0.3-beta.1
|
||||||
|
|
||||||
**发布日期**
|
**发布日期**
|
||||||
|
|||||||
BIN
support/consulting.png
Normal file
BIN
support/consulting.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 410 KiB |
@@ -7,13 +7,13 @@ description: 本文描述了如何获得 Kuboard 授权
|
|||||||
## Kuboard 授权声明
|
## Kuboard 授权声明
|
||||||
|
|
||||||
* 使用 Kuboard 是免费的,无论您是用于学习还是用于生产
|
* 使用 Kuboard 是免费的,无论您是用于学习还是用于生产
|
||||||
* 将来可能会推出 Kuboard Plus,当前所有的功能,将来仍然免费。Kuboard Plus 侧重点:
|
* 将来会推出 Kuboard Plus,当前所有的功能,将来仍然免费。Kuboard Plus 侧重点:
|
||||||
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
|
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
|
||||||
* 审计日志
|
* 审计日志
|
||||||
|
|
||||||
## Kuboard 支持
|
## Kuboard 支持
|
||||||
|
|
||||||
### 免费支持
|
### QQ社群支持
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<Qq/>
|
<Qq/>
|
||||||
@@ -22,11 +22,11 @@ description: 本文描述了如何获得 Kuboard 授权
|
|||||||
<img src="/images/kuboard_qq.png" />
|
<img src="/images/kuboard_qq.png" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
### 承诺24小时内答复
|
### 微信即时答复
|
||||||
|
|
||||||
|
* 微信群聊里的问题,通常可立刻答复,并承诺2小时内给出解答
|
||||||
|
* 可提供 TeamViewer 远程协助
|
||||||
<div>
|
<div>
|
||||||
<div style="margin-top: 10px;">微信群聊里的问题,承诺 24 小时答复</div>
|
|
||||||
<div style="margin-top: 10px;">未打赏用户可进 QQ 群聊,<span style="color: red;">打赏用户可进微信群聊</span>。</div>
|
|
||||||
<div style="margin-top: 10px;">
|
<div style="margin-top: 10px;">
|
||||||
<span>扫第一个二维码完成打赏,扫第二个进微信群聊。</span>
|
<span>扫第一个二维码完成打赏,扫第二个进微信群聊。</span>
|
||||||
<p style="margin-top: 10px;">
|
<p style="margin-top: 10px;">
|
||||||
@@ -38,6 +38,13 @@ description: 本文描述了如何获得 Kuboard 授权
|
|||||||
|
|
||||||
### 微服务落地咨询
|
### 微服务落地咨询
|
||||||
|
|
||||||
|
Kuboard 团队提供微服务实施落地的全过程咨询和实施,服务范围:
|
||||||
|
<p>
|
||||||
|
<img src="./consulting.png">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
如有需要请加微信:
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<img src="/images/dz2.jpeg" style="width: 200px;"></img>
|
<img src="/images/dz2.jpeg" style="width: 200px;"></img>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user