LimitRange
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div :style="$isDev ? 'background-color: #grey;' : ''">
|
||||
<p style="background-color: #f3f5f7;padding: 10px 5px 5px 5px;">
|
||||
<div :style="$isDev ? 'background-color: #grey;' : ''" v-if="!$frontmatter.lessAds">
|
||||
<p style="background-color: #f3f5f7;padding: 10px 5px 5px 10px;">
|
||||
<Qq></Qq>
|
||||
群号: 808894550
|
||||
<span style="color: red; font-weight: 500;">在线答疑</span>,
|
||||
|
||||
29
.vuepress/components/FriendlyUrl.vue
Normal file
29
.vuepress/components/FriendlyUrl.vue
Normal file
@ -0,0 +1,29 @@
|
||||
<template>
|
||||
<div style="margin-top: 10px;">
|
||||
友情链接:
|
||||
<span v-for="item in urls" style="margin-right: 10px;"
|
||||
@click="$sendGaEvent('友情链接', '友情链接: ' + item.name, '友情链接:' + item.name + ' --- ' + $page.path)">
|
||||
<a target="_blank" :href="item.url + '?utm_source=kuboard.cn'">
|
||||
{{item.name}}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
data () {
|
||||
return {
|
||||
urls: [
|
||||
{name: 'sealos 官网', url: 'https://sealyun.com/'},
|
||||
{name: '云原生实验室', url: 'https://www.yangcs.net/'},
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@ -94,6 +94,7 @@
|
||||
|
||||
<div class="footer">
|
||||
Copyright © 2019-present 邵欢庆 <span @click="$sendGaEvent('友情链接', '友情链接: 仁聚汇通', '友情链接:' + $page.path)"><a href="http://www.eigpay.com" target="_blank">仁聚汇通</a></span> | 京ICP备19008693号-2
|
||||
<FriendlyUrl></FriendlyUrl>
|
||||
</div>
|
||||
<AdSenseRightSide/>
|
||||
</main>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
<div>
|
||||
|
||||
<p>必须选中下面的五个勾选框才能继续</p>
|
||||
<p style="color: red">必须选中下面的六个勾选框才能继续</p>
|
||||
<p>选中后显示 安装 docker/kubelet 的文档</p>
|
||||
|
||||
<div style="display: inline-block; width: 480px; max-width: calc(100vw - 100px); overflow: hidden; line-height: 40px; background-color: rgba(255,229,100,0.3); padding: 20px 0 0 20px; margin-bottom: 20px; border: 1px solid #d7dae2;">
|
||||
@ -15,10 +15,11 @@
|
||||
<el-form-item prop="checked" class="env-form-item">
|
||||
<el-checkbox-group v-model="form.checked">
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="centos">我的任意节点 centos 版本在兼容列表中</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="hostname">我的任意节点 hostname 不是 localhost,且不包含下划线</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="cpu">我的任意节点 CPU 内核数量大于等于 2</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="docker">我的任意节点不会直接使用 docker run 或 docker-compose 运行容器</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="hostname">我的任意节点 hostname 不是 localhost,且不包含下划线和小数点</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="ipaddress">我的任意节点都有固定的内网 IP 地址</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="networkcard">我的任意节点只有一块网卡(可以在完成K8S安装后再添加网卡)</el-checkbox> </li>
|
||||
<li style="height: 40px;"> <el-checkbox style="width: 300px; max-width: calc(100vw - 100px); text-align: left;" label="docker">我的任意节点不会直接使用 docker run 或 docker-compose 运行容器</el-checkbox> </li>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -35,6 +36,7 @@
|
||||
</div>
|
||||
<el-collapse-transition>
|
||||
<div v-show="envOk" key="ok">
|
||||
<el-button style="margin-top: 10px;" @click="review" type="text">再看看我是否符合安装条件</el-button>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
@ -42,7 +44,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const ENV_COUNT = 5
|
||||
const ENV_COUNT = 6
|
||||
|
||||
export default {
|
||||
props: {
|
||||
@ -83,6 +85,7 @@ export default {
|
||||
},
|
||||
envOk () {
|
||||
if (this.envOk) {
|
||||
this.$message.success('如果您符合刚才六个条件,请继续安装')
|
||||
this.$sendGaEvent('install-' + this.type, 'envOk-' + this.type, '已确认环境符合条件-' + this.type)
|
||||
}
|
||||
}
|
||||
@ -96,6 +99,10 @@ export default {
|
||||
return { flag: false, message: '请翻到本页最下方,并确认您的环境符合要求的条件' }
|
||||
}
|
||||
return { flag: true, message: 'can slide next' }
|
||||
},
|
||||
review () {
|
||||
this.form.checked = []
|
||||
this.$sendGaEvent('install-' + this.type, 'envReview-' + this.type, '回顾安装条件-' + this.type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
.vuepress/components/KuboardLiscense.vue
Normal file
57
.vuepress/components/KuboardLiscense.vue
Normal file
@ -0,0 +1,57 @@
|
||||
<template>
|
||||
<div style="margin-top: 20px;">
|
||||
<Vssue :issueId="71" :options="options"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
vssues: {},
|
||||
refreshId: undefined
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isLocalHost() {
|
||||
// if (typeof window !== 'undefined') {
|
||||
// if (window.location.host === 'localhost:8080') {
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
return false
|
||||
},
|
||||
options () {
|
||||
let _this = this
|
||||
let result = {
|
||||
platform: 'github',
|
||||
locale: 'zh-CN',
|
||||
autoCreateIssue: true,
|
||||
admins: ['shaohq'],
|
||||
// all other options of Vssue are allowed
|
||||
owner: 'eip-work',
|
||||
repo: 'kuboard-press',
|
||||
clientId: this.isLocalHost ? 'f96af83d4bff4e2b9e3e' : '8141f5c205ad2f6d90d5',
|
||||
clientSecret: this.isLocalHost ? 'cf5686d68d4aab6d3bfa256da9a714049b239c1f' : 'b3e238508a2e8da9f2b355662b4cb3e62ecaa1d4',
|
||||
issueContent: (options, url) => { return 'https://kuboard.cn' + _this.$route.path },
|
||||
perPage: 50
|
||||
}
|
||||
return result
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.$set(this.vssues, this.$route.path, this.$frontmatter.vssueId)
|
||||
},
|
||||
watch: {
|
||||
'$route.path': function () {
|
||||
this.$set(this.vssues, this.$route.path, this.$frontmatter.vssueId)
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.vssue-header-powered-by {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
@ -29,6 +29,12 @@ module.exports = {
|
||||
// `],
|
||||
['script', { 'data-ad-client': "ca-pub-3313149841665250", async: true, src: "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"}],
|
||||
// <script data-ad-client="ca-pub-3313149841665250" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
// ['script', { 'type': 'text/javascript', async: true, src: '//downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js', 'data-dojo-config': 'usePlainJson: true, isDebug: false'}],
|
||||
// ['script', { 'type': 'text/javascript' }, `
|
||||
// window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us20.list-manage.com","uuid":"2273cb19eb20bb1bc5b7745a7","lid":"f1f25d6dac","uniqueMethods":true}) })
|
||||
// `],
|
||||
// <script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script>
|
||||
// <script type="text/javascript">window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us20.list-manage.com","uuid":"2273cb19eb20bb1bc5b7745a7","lid":"f1f25d6dac","uniqueMethods":true}) })</script>
|
||||
],
|
||||
markdown: {
|
||||
toc: { includeLevel: [2, 3] },
|
||||
@ -64,7 +70,7 @@ module.exports = {
|
||||
// },
|
||||
'@vssue/vuepress-plugin-vssue': {
|
||||
// set `platform` rather than `api`
|
||||
platform: 'github',
|
||||
platform: 'github-v4',
|
||||
locale: 'zh-CN',
|
||||
autoCreateIssue: false,
|
||||
admins: ['shaohq'],
|
||||
@ -201,7 +207,7 @@ module.exports = {
|
||||
children: [
|
||||
// ['install-k8s-upgrade', '升级Kubernetes集群'],
|
||||
'upgrade-k8s/1.15.x-1.15.4',
|
||||
'upgrade-k8s/1.15.x-1.16.x',
|
||||
['upgrade-k8s/1.15.x-1.16.x', 'K8S从1.15.x(1.16.x)升级到 1.16.x'],
|
||||
'upgrade-k8s/calico-3.8-3.9',
|
||||
]
|
||||
},
|
||||
@ -209,11 +215,11 @@ module.exports = {
|
||||
title: '管理 Kubernetes',
|
||||
collapsable: false,
|
||||
children: [
|
||||
'install-dashboard',
|
||||
'install-dashboard-upgrade',
|
||||
'install-kubectl',
|
||||
'config-kubectl',
|
||||
'install-k8s-dashboard',
|
||||
'install-dashboard',
|
||||
'install-dashboard-upgrade'
|
||||
]
|
||||
},
|
||||
// {
|
||||
@ -468,7 +474,14 @@ module.exports = {
|
||||
title: '策略',
|
||||
collapsable: true,
|
||||
children: [
|
||||
'k8s-advanced/policy/lr',
|
||||
{
|
||||
title: 'Limit Range',
|
||||
collapsable: true,
|
||||
children: [
|
||||
'k8s-advanced/policy/lr',
|
||||
'k8s-advanced/policy/lr_container',
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
|
||||
3
.vuepress/public/robots.txt
Normal file
3
.vuepress/public/robots.txt
Normal file
@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /support/
|
||||
@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: LimitRange
|
||||
metadata:
|
||||
name: limit-mem-cpu-per-container
|
||||
spec:
|
||||
limits:
|
||||
- max:
|
||||
cpu: "800m"
|
||||
memory: "1Gi"
|
||||
min:
|
||||
cpu: "100m"
|
||||
memory: "99Mi"
|
||||
default:
|
||||
cpu: "700m"
|
||||
memory: "900Mi"
|
||||
defaultRequest:
|
||||
cpu: "110m"
|
||||
memory: "111Mi"
|
||||
type: Container
|
||||
@ -0,0 +1,37 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: busybox1
|
||||
spec:
|
||||
containers:
|
||||
- name: busybox-cnt01
|
||||
image: busybox
|
||||
command: ["/bin/sh"]
|
||||
args: ["-c", "while true; do echo hello from cnt01; sleep 10;done"]
|
||||
resources:
|
||||
requests:
|
||||
memory: "100Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "200Mi"
|
||||
cpu: "500m"
|
||||
- name: busybox-cnt02
|
||||
image: busybox
|
||||
command: ["/bin/sh"]
|
||||
args: ["-c", "while true; do echo hello from cnt02; sleep 10;done"]
|
||||
resources:
|
||||
requests:
|
||||
memory: "100Mi"
|
||||
cpu: "100m"
|
||||
- name: busybox-cnt03
|
||||
image: busybox
|
||||
command: ["/bin/sh"]
|
||||
args: ["-c", "while true; do echo hello from cnt03; sleep 10;done"]
|
||||
resources:
|
||||
limits:
|
||||
memory: "200Mi"
|
||||
cpu: "500m"
|
||||
- name: busybox-cnt04
|
||||
image: busybox
|
||||
command: ["/bin/sh"]
|
||||
args: ["-c", "while true; do echo hello from cnt04; sleep 10;done"]
|
||||
@ -51,7 +51,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="page-nav" style="max-width: 1000px; padding-top:0; margin-top: 1rem;">
|
||||
<div class="page-nav" style="max-width: 1000px; padding-top:0; margin-top: 1rem;" v-if="!$frontmatter.lessAds">
|
||||
<AdSensePageBottomInline/>
|
||||
</div>
|
||||
<!-- <div style="text-align: center; margin-bottom: 10px;" v-if="$page.path.indexOf('/learning/') === 0">
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-for="(item, key) in vssues" :key="key">
|
||||
<Vssue v-if="item" v-show="key === $route.path" :issueId="item" :options="options"/>
|
||||
<Vssue v-if="item && item > 0" v-show="key === $route.path" :issueId="item" :options="options"/>
|
||||
<div v-if="item === undefined && isLocalHost" v-show="key === $route.path" :key="key">
|
||||
<el-button type="danger" @click="vssues[key] = ''">请创建 VssueId</el-button>
|
||||
</div>
|
||||
|
||||
@ -30,7 +30,12 @@
|
||||
</div>
|
||||
<StarGazer/>
|
||||
</div>
|
||||
<div slot="page-bottom" class="bottom-description">Copyright © 2019-present 邵欢庆 <span @click="$sendGaEvent('友情链接', '友情链接: 仁聚汇通', '友情链接:' + $page.path)"><a href="http://www.eigpay.com" target="_blank">仁聚汇通</a></span> | 京ICP备19008693号-2
|
||||
<div slot="page-bottom" class="bottom-description">
|
||||
Copyright © 2019-present 邵欢庆
|
||||
<span @click="$sendGaEvent('友情链接', '友情链接: 仁聚汇通', '友情链接:' + $page.path)">
|
||||
<a href="http://www.eigpay.com" target="_blank">仁聚汇通</a>
|
||||
</span> | 京ICP备19008693号-2
|
||||
<FriendlyUrl></FriendlyUrl>
|
||||
</div>
|
||||
</ParentLayout>
|
||||
</template>
|
||||
|
||||
@ -39,7 +39,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="page-bottom" class="bottom-description">Copyright © 2019-present 邵欢庆 <span @click="$sendGaEvent('友情链接', '友情链接: 仁聚汇通', '友情链接:' + $page.path)"><a href="http://www.eigpay.com" target="_blank">仁聚汇通</a></span> | 京ICP备19008693号-2
|
||||
<div slot="page-bottom" class="bottom-description">
|
||||
Copyright © 2019-present 邵欢庆
|
||||
<span @click="$sendGaEvent('友情链接', '友情链接: 仁聚汇通', '友情链接:' + $page.path)">
|
||||
<a href="http://www.eigpay.com" target="_blank">仁聚汇通</a>
|
||||
</span> | 京ICP备19008693号-2
|
||||
<FriendlyUrl></FriendlyUrl>
|
||||
</div>
|
||||
</ParentLayout>
|
||||
</template>
|
||||
|
||||
@ -20,7 +20,7 @@ Kuboard 是一款基于 Kubernetes 的微服务管理界面。目的是帮助用
|
||||
## Kubernetes安装文档
|
||||
|
||||
* <a href="https://kuboard.cn/install/install-k8s.html">Kubernetes (K8S)v1.16.2 安装文档</a>
|
||||
* 每天超过200名网友参考此文档完成Kubernetes安装
|
||||
* 每天超过 300 名网友参考此文档完成Kubernetes安装
|
||||
* QQ群在线答疑
|
||||
* <a href="https://kuboard.cn/install/install-kubernetes.html">Kubernetes 高可用安装文档</a>
|
||||
* <a href="https://kuboard.cn/install/upgrade-k8s/1.15.x-1.16.x.html">Kubernetes升级到1.16.x</a>
|
||||
|
||||
@ -121,7 +121,7 @@ hostnamectl status
|
||||
``` sh
|
||||
# 在 master 节点和 worker 节点都要执行
|
||||
|
||||
curl -sSL https://kuboard.cn/install-script/v1.15.3/install_kubelet.sh | sh
|
||||
curl -sSL https://kuboard.cn/install-script/v1.15.3/install-kubelet.sh | sh
|
||||
|
||||
```
|
||||
|
||||
@ -130,7 +130,7 @@ curl -sSL https://kuboard.cn/install-script/v1.15.3/install_kubelet.sh | sh
|
||||
|
||||
手动执行以下代码,效果与快速安装完全相同。
|
||||
|
||||
<<< @/.vuepress/public/install-script/v1.15.3/install_kubelet.sh
|
||||
<<< @/.vuepress/public/install-script/v1.15.3/install-kubelet.sh
|
||||
|
||||
::: warning
|
||||
如果此时执行 `service status kubelet` 命令,将得到 kubelet 启动失败的错误提示,请忽略此错误,因为必须完成后续步骤中 kubeadm init 的操作,kubelet 才能正常启动
|
||||
@ -183,7 +183,7 @@ export APISERVER_NAME=apiserver.demo
|
||||
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
|
||||
export POD_SUBNET=10.100.0.1/16
|
||||
echo "127.0.0.1 ${APISERVER_NAME}" >> /etc/hosts
|
||||
curl -sSL https://kuboard.cn/install-script/v1.15.3/init_master.sh | sh
|
||||
curl -sSL https://kuboard.cn/install-script/v1.15.3/init-master.sh | sh
|
||||
```
|
||||
|
||||
</el-tab-pane>
|
||||
@ -198,7 +198,7 @@ export POD_SUBNET=10.100.0.1/16
|
||||
echo "127.0.0.1 ${APISERVER_NAME}" >> /etc/hosts
|
||||
```
|
||||
|
||||
<<< @/.vuepress/public/install-script/v1.15.3/init_master.sh
|
||||
<<< @/.vuepress/public/install-script/v1.15.3/init-master.sh
|
||||
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
---
|
||||
vssueId: 92
|
||||
description: Kubernete升级_使用kubeadm升级K8S集群到v1.15.4
|
||||
description: Kubernete升级_使用kubeadm升级K8S集群到v1.15.5
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes升级,K8S升级,升级Kuberentes1.15.4
|
||||
content: Kubernetes升级,K8S升级,升级Kuberentes1.15.5
|
||||
---
|
||||
|
||||
# K8S从1.15.x升级到 1.15.4
|
||||
# K8S从1.15.x升级到 1.15.5
|
||||
|
||||
<AdSenseTitle/>
|
||||
|
||||
@ -15,11 +15,11 @@ meta:
|
||||
|
||||
## 前提条件
|
||||
|
||||
* 您使用 kubeadm 安装了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 集群
|
||||
* 您想要将其升级到最新的版本 kubernetes v1.15.4
|
||||
* 您使用 kubeadm 安装了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 / v1.15.4 集群
|
||||
* 您想要将其升级到最新的版本 kubernetes v1.15.5
|
||||
|
||||
::: tip
|
||||
www.kuboard.cn 是一款免费的基于 Kubernetes 的微服务管理界面,目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 到 kubernetes v1.15.4 的升级文档,其他版本的集群,请参考 kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
|
||||
www.kuboard.cn 是一款免费的基于 Kubernetes 的微服务管理界面,目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 到 kubernetes v1.15.5 的升级文档,其他版本的集群,请参考 kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
|
||||
:::
|
||||
|
||||
## 升级 kubeadm/kubelet/kubectl
|
||||
@ -28,7 +28,7 @@ www.kuboard.cn 是一款免费的基于 Kubernetes 的微服务管理界面,
|
||||
|
||||
``` sh
|
||||
# 在所有节点执行(包括 master 和 worker 节点)
|
||||
yum install -y kubelet-1.15.4 kubeadm-1.15.4 kubectl-1.15.4
|
||||
yum install -y kubelet-1.15.5 kubeadm-1.15.5 kubectl-1.15.5
|
||||
systemctl daemon-reload
|
||||
systemctl restart kubelet
|
||||
```
|
||||
@ -74,7 +74,7 @@ scheduler: {}
|
||||
|
||||
文件内容如下所示,根据前面 `kubeadm config view` 的执行结果,修改了如下字段:
|
||||
* imageRepository 的值修改为:registry.cn-hangzhou.aliyuncs.com/google_containers
|
||||
* kubernetesVersion 的值修改为: v1.15.4
|
||||
* kubernetesVersion 的值修改为: v1.15.5
|
||||
``` yaml {15,17}
|
||||
apiServer:
|
||||
extraArgs:
|
||||
@ -92,7 +92,7 @@ etcd:
|
||||
dataDir: /var/lib/etcd
|
||||
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
|
||||
kind: ClusterConfiguration
|
||||
kubernetesVersion: v1.15.4
|
||||
kubernetesVersion: v1.15.5
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
|
||||
@ -6,12 +6,38 @@ meta:
|
||||
content: Kubernetes升级,K8S升级,升级Kuberentes1.16.x,Kubernetes升级到1.16
|
||||
---
|
||||
|
||||
# K8S从1.15.x(1.16.x)升级到 1.16.x
|
||||
# Kubernetes高危漏洞及解决办法(CVE-2019-11253)
|
||||
<!-- # K8S从1.15.x(1.16.x)升级到 1.16.x -->
|
||||
|
||||
<AdSenseTitle/>
|
||||
|
||||
参考文档: kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
|
||||
|
||||
**【漏洞详情】**
|
||||
|
||||
2019年10月17日,Kubernetes发布漏洞公告 [[ANNOUNCE] CVE-2019-11253: denial of service vulnerability from malicious YAML or JSON payloads](https://discuss.kubernetes.io/t/announce-cve-2019-11253-denial-of-service-vulnerability-from-malicious-yaml-or-json-payloads/8349)。具备一定权限的攻击者通过发送恶意的 YAML 或 JSON 格式的攻击包可导致 kube-apiserver CPU 或内存资源耗尽,无法正常提供服务,1.14.0 之前的版本由于默认RBAC策略允许匿名用户提交请求,所以之前的版本均在影响范围。
|
||||
|
||||
【风险等级】
|
||||
|
||||
<font color="red" weight="500">高风险</font>
|
||||
|
||||
【影响版本】
|
||||
* Kubernetes v1.0.0-1.12.x
|
||||
* Kubernetes v1.13.0-1.13.11(v1.13.12版本已修复)
|
||||
* Kubernetes v1.14.0-1.14.7(v1.14.8版本已修复)
|
||||
* Kubernetes v1.15.0-1.15.4(v1.15.5版本已修复)
|
||||
* Kubernetes v1.16.0-1.16.1(v1.16.2版本已修复)
|
||||
|
||||
【安全版本】
|
||||
* Kubernetes v1.13.12
|
||||
* Kubernetes v1.14.8
|
||||
* Kubernetes v1.15.5
|
||||
* Kubernetes v1.16.2
|
||||
|
||||
【修复建议】
|
||||
|
||||
请升级到对应的【安全版本】。本文提供了如何升级到 1.16.2 的方法。另可参考 [K8S从1.15.x升级到 1.15.5](./1.15.x-1.15.4.html)
|
||||
|
||||
本文描述了如何从 kubernetes v1.15.x(或1.16.x)升级到 Kubernetes v1.16.y,前提是,您的 Kubernetes 集群是使用 kubeadm 安装的。
|
||||
|
||||
升级的高阶过程如下所示:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
# vssueId: 107
|
||||
vssueId: 141
|
||||
description: Kubernetes升级1.16.x。本文描述了如何从 Kubernetes 网络插件 calico 3.8.x 升级到 3.9。执行命令 kubectl describe deployment calico-kube-controllers -n kube-system 确认当前 calico 版本
|
||||
meta:
|
||||
- name: keywords
|
||||
@ -60,13 +60,52 @@ Pod Template:
|
||||
``` sh
|
||||
# 如果版本号是 v3.8.2 或者 v3.8.x,则删除命令如下
|
||||
# calico.yaml 的URL中,不带版本号的最后一位
|
||||
kubectl delete -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml --no-check-certificate
|
||||
kubectl delete -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
|
||||
```
|
||||
|
||||
## 安装新版本
|
||||
|
||||
执行以下命令,安装 calico 3.9:
|
||||
执行命令查看kubernetes
|
||||
|
||||
``` sh
|
||||
kubectl delete -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml --no-check-certificate
|
||||
``` yaml {21}
|
||||
apiServer:
|
||||
extraArgs:
|
||||
authorization-mode: Node,RBAC
|
||||
timeoutForControlPlane: 4m0s
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
certificatesDir: /etc/kubernetes/pki
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: apiserver.demo:6443
|
||||
controllerManager: {}
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/etcd
|
||||
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
|
||||
kind: ClusterConfiguration
|
||||
kubernetesVersion: v1.16.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
podSubnet: 10.100.0.1/16
|
||||
scheduler: {}
|
||||
```
|
||||
|
||||
执行以下命令,安装 calico 3.9,请注意,下面的 POD_SUBNET 环境变量来自于上面的输出结果:
|
||||
|
||||
``` sh {2}
|
||||
# 命令行中环境变量 POD_SUBNET 的取值 10.100.0.1/16 来自于上一个命令的输出结果
|
||||
export POD_SUBNET=10.100.0.1/16
|
||||
rm -f calico.yaml
|
||||
wget https://docs.projectcalico.org/v3.9/manifests/calico.yaml --no-check-certificate
|
||||
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico.yaml
|
||||
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
|
||||
```
|
||||
|
||||
此时可执行命令检查 calico 的版本:
|
||||
``` sh
|
||||
kubectl describe deployment calico-kube-controllers -n kube-system
|
||||
```
|
||||
|
||||
:tada: :tada: :tada:
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
---
|
||||
# vssueId: 135
|
||||
vssueId: 143
|
||||
titlePrefix: LimitRange
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_
|
||||
description: Kubernetes教程_默认情况下_容器在 Kubernetes 集群上运行时_不受计算资源的限制_使用Resourcequota集群管理员可以针对名称空间限定资源的使用情况
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes
|
||||
---
|
||||
|
||||
# Limit Ranges
|
||||
# 概述
|
||||
|
||||
> 参考文档:[Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)
|
||||
|
||||
@ -47,3 +48,30 @@ podtemplates tr
|
||||
通常 LimitRange 是默认启用的。
|
||||
|
||||
<!-- FIXME 如何启用 LimitRange -->
|
||||
|
||||
## 基本介绍
|
||||
|
||||
* 集群管理员在名称空间中创建一个 `LimitRange` 对象
|
||||
* 用户在名称空间中创建工作负载等对象,例如 Pod、Container、PersistentVolumeClaim 等
|
||||
* 针对那些没有设置 [计算资源请求request和限制limit](/learning/k8s-intermediate/config/computing-resource.html) 的 Pod 和容器,`LimitRanger` 根据名称空间中的 `LimitRange` 对象为其设定默认的资源请求和响应,并确保 Pod 和容器对计算资源的实际消耗不会超过指定的值
|
||||
* 如果创建或更新对象(Pod、Container、PersistentVolumeClaim)的请求与 Limit Range 的限定相冲突,apiserver 将返回 HTTP status 状态码 `403 FORBIDDEN`,以及相应的错误提示信息
|
||||
* 如果名称空间中激活了 limit range 来限定 cpu 和内存等计算资源的使用,则,用户创建 Pod、Container 时,必须指定 cpu 或内存的 `request` 和 `limit`,否则系统将拒绝创建 Pod
|
||||
* Kubernetes 只在 Pod 创建阶段检查 `LimitRange` 的限定,而不在 Pod 运行时执行任何检查
|
||||
|
||||
使用 LimitRange 的例子有:
|
||||
* 在一个总容量为 8G内存 16核CPU 的 2 节点集群上,限定某个名称空间中的 Pod 使用 100m的CPU请求(request)且不超过 500m的CPU上限(limit),200Mi的内存请求(request)且不超过 600Mi的内存上线(limit)
|
||||
* 为没有定义cpu和内存请求的容器,指定默认的 CPU 请求(request)和限制(limit)均为 150m,默认的内存请求为 300Mi
|
||||
|
||||
当名称空间总的 limit 小于名称空间中 Pod/Container 的 limit 之和时,将发生资源争夺的现象,容器或者 Pod 将不能创建。
|
||||
|
||||
在资源争夺现象发生时,或者修改 limitrange 的时候,这两种情况都不会影响到已经创建的 Pod/Container。
|
||||
|
||||
|
||||
|
||||
更多内容请参考:
|
||||
|
||||
* [限定容器的计算资源](./lr_container.html)
|
||||
* [限定Pod的计算资源]
|
||||
* [限定存储资源]
|
||||
* [Limit/Request 比例]
|
||||
* [例子]
|
||||
|
||||
172
learning/k8s-advanced/policy/lr_container.md
Normal file
172
learning/k8s-advanced/policy/lr_container.md
Normal file
@ -0,0 +1,172 @@
|
||||
---
|
||||
vssueId: 143
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_本文讨论了如何在容器级别创建 LimitRange。假设有一个 Pod 包含 4个容器,每个容器都定义了 spec.resource,此时 LimitRanger 管理控制器在处理该 Pod 中的 4个容器是,处理方式是不一样的。
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes
|
||||
---
|
||||
|
||||
# 限定容器的计算资源
|
||||
|
||||
> 参考文档:[Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)
|
||||
|
||||
<AdSenseTitle>
|
||||
</AdSenseTitle>
|
||||
|
||||
本文讨论了如何在容器级别创建 LimitRange。假设有一个 Pod 包含 4个容器,每个容器都定义了 `spec.resource`,此时 LimitRanger 管理控制器在处理该 Pod 中的 4个容器是,处理方式是不一样的。
|
||||
|
||||
演示步骤如下:
|
||||
|
||||
* 执行如下命令创建名称空间 `limitrange-demo`
|
||||
|
||||
``` sh
|
||||
kubectl create namespace limitrange-demo
|
||||
```
|
||||
|
||||
将 kubectl 默认名称空间切换至 `limitrange-demo`
|
||||
|
||||
``` sh
|
||||
kubectl config set-context --current --namespace=limitrange-demo
|
||||
```
|
||||
|
||||
* LimitRange 对象的 yaml 文件如下所示:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-container-limit-range.yaml
|
||||
|
||||
该对象为名称空间中的容器定义了:
|
||||
* 最大和最小的CPU/内存
|
||||
* 默认的 CPU/内存限定
|
||||
* 默认的 CPU/内存请求
|
||||
|
||||
执行命令以创建该对象:
|
||||
``` sh
|
||||
kubectl create -f https://kuboard.cn/statics/learning/policy/lr-container-limit-range.yaml -n limitrange-demo
|
||||
```
|
||||
执行命令查看结果
|
||||
``` sh
|
||||
kubectl describe limitrange/limit-mem-cpu-per-container -n limitrange-demo
|
||||
```
|
||||
输出结果如下所示
|
||||
```
|
||||
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
|
||||
---- -------- --- --- --------------- ------------- -----------------------
|
||||
Container cpu 100m 800m 110m 700m -
|
||||
Container memory 99Mi 1Gi 111Mi 900Mi -
|
||||
```
|
||||
|
||||
* 前面提到的包含 4 个容器的 Pod,其 yaml 文件如下所示:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-container-pod.yaml
|
||||
|
||||
执行命令以创建该 Pod
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-container-pod.yaml
|
||||
```
|
||||
|
||||
## 容器包含有效的 CPU/内存的requests/limits
|
||||
|
||||
执行以下命令,查看 `busybox-cnt01` 的配置信息
|
||||
|
||||
``` sh
|
||||
kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[0].resources"
|
||||
```
|
||||
输出结果如下所示
|
||||
``` json
|
||||
{
|
||||
"limits": {
|
||||
"cpu": "500m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"requests": {
|
||||
"cpu": "100m",
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
```
|
||||
* `busybox` Pod 中的容器 `busybox-cnt01` 定义了 `requests.cpu=100m` 和 `requests.memory=100Mi`
|
||||
* `100m <= 500m <= 800m` 容器的 cpu limit(500m)在名称空间 LimitRange 指定的范围内
|
||||
* `99Mi <= 200Mi <= 1Gi` 容器的内存 limit(200Mi)在名称空间 LimitRange 指定的范围内
|
||||
* 没有为CPU/内存指定 request/limit 比例
|
||||
* 此时容器的定义是有效的,将被创建
|
||||
|
||||
## 容器包含有效的 CPU/内存requests且没有指定limits
|
||||
|
||||
执行以下命令,查看 `busybox-cnt02` 的配置信息
|
||||
```sh
|
||||
kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[1].resources"
|
||||
```
|
||||
输出结果如下所示
|
||||
``` json
|
||||
{
|
||||
"limits": {
|
||||
"cpu": "700m",
|
||||
"memory": "900Mi"
|
||||
},
|
||||
"requests": {
|
||||
"cpu": "100m",
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
```
|
||||
* `busybox` Pod 中的容器 `busybox-cnt02` 定义了 `requests.cpu=100m` 和 `requests.memory=100Mi`,且为指定 CPU/内存的最大限定
|
||||
* 由于容器没有定义 limits,则名称空间的 LimitRange 定义的 `limits.cpu=700mi` 和 `limits.memory=900Mi` 被注入到该容器
|
||||
* `100m <= 700m <= 800m` 容器的CPU最大限定(700m)在名称空间 LimitRange 指定的范围内
|
||||
* `99Mi <= 900Mi <= 1Gi` 容器的内存 limit(900Mi)在名称空间 LimitRange 指定的范围内
|
||||
* 没有为CPU/内存指定 request/limit 比例
|
||||
* 此时容器的定义是有效的,将被创建
|
||||
|
||||
## 容器包含有效的CPU/内存limits且没有指定requests
|
||||
|
||||
执行以下命令,查看 `busybox-cnt03` 的配置信息
|
||||
``` sh
|
||||
kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[2].resources"
|
||||
```
|
||||
输出结果如下所示
|
||||
``` json
|
||||
{
|
||||
"limits": {
|
||||
"cpu": "500m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"requests": {
|
||||
"cpu": "500m",
|
||||
"memory": "200Mi"
|
||||
}
|
||||
}
|
||||
```
|
||||
* `busybox` Pod 中的容器 `busybox-cnt03` 定义了 `limits.cpu=500m` 和 `limits.memory=200Mi`,且没有指定 CPU/内存的 `requests`
|
||||
* 由于容器没有定义 `requests`,名称空间中 LimitRange 定义的 `defaultRequest` 并没有注入到容器的 `request` 字段,反而,容器定义的 `limits` 被设置到了其 `requests` 字段: `limits.cpu=500m` 和 `limits.memory=200Mi`
|
||||
* `100m <= 500m <= 800m` 容器的 cpu 最大限定(500m)在名称空间 LimitRange 指定的范围内
|
||||
* `99Mi <= 200Mi <= 1Gi` 容器的内存最大限定(200Mi)在名称空间 LimitRange 指定的范围内
|
||||
* 没有为CPU/内存指定 request/limit 比例
|
||||
* 此时容器的定义是有效的,将被创建
|
||||
|
||||
## 容器不包含CPU/内存的requests/limits
|
||||
|
||||
执行以下命令,查看 `busybox-cnt04` 的配置信息
|
||||
``` sh
|
||||
kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[3].resources"
|
||||
```
|
||||
输出结果如下所示:
|
||||
```json
|
||||
{
|
||||
"limits": {
|
||||
"cpu": "700m",
|
||||
"memory": "900Mi"
|
||||
},
|
||||
"requests": {
|
||||
"cpu": "110m",
|
||||
"memory": "111Mi"
|
||||
}
|
||||
}
|
||||
```
|
||||
* `busybox` Pod 中的容器 `busybox-cnt04` 既没有定义 request,也没有定义 limits
|
||||
* 由于容器没有定义 limits,则名称空间的 LimitRange 定义的 `limits.cpu=700mi` 和 `limits.memory=900Mi` 被注入到该容器
|
||||
* 由于容器没有定义 requests,则名称空间的 LimitRange 定义的 `requests.cpu=110m` 和 `requests.memory=110Mi` 被注入到该容器
|
||||
* `100m <= 700m <= 800m` 容器的 cpu 最大限定(700m)在名称空间 LimitRange 指定的范围内
|
||||
* `99Mi <= 900Mi <= 1Gi` 容器的内存 limit(900Mi)在名称空间 LimitRange 指定的范围内
|
||||
* 没有为CPU/内存指定 request/limit 比例
|
||||
* 此时容器的定义是有效的,将被创建
|
||||
|
||||
Pod `busybox` 中所有的容器都通过了名称空间的 LimitRange 检查,此 Pod 将被创建
|
||||
@ -41,6 +41,9 @@ Kubernetes 对 Pod 进行调度时,以当时集群中各节点的可用资源
|
||||
```
|
||||
* 执行以下命令,启动 nfs 服务
|
||||
```sh
|
||||
# 创建共享目录,如果要使用自己的目录,请替换本文档中所有的 /root/nfs_root/
|
||||
mkdir /root/nfs_root
|
||||
|
||||
systemctl enable rpcbind
|
||||
systemctl enable nfs-server
|
||||
|
||||
|
||||
761
package-lock.json
generated
761
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@ -4,13 +4,13 @@
|
||||
"docs:build": "vuepress build ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vssue/api-github-v3": "^1.0.3",
|
||||
"@vssue/vuepress-plugin-vssue": "^1.0.3",
|
||||
"@vssue/api-github-v4": "^1.2.0",
|
||||
"@vssue/vuepress-plugin-vssue": "^1.2.0",
|
||||
"@vuepress/plugin-active-header-links": "^1.0.0-rc.1",
|
||||
"@vuepress/plugin-back-to-top": "^1.1.0",
|
||||
"@vuepress/plugin-google-analytics": "^1.1.0",
|
||||
"@vuepress/plugin-medium-zoom": "^1.1.0",
|
||||
"@vuepress/plugin-nprogress": "^1.1.0",
|
||||
"@vuepress/plugin-back-to-top": "^1.2.0",
|
||||
"@vuepress/plugin-google-analytics": "^1.2.0",
|
||||
"@vuepress/plugin-medium-zoom": "^1.2.0",
|
||||
"@vuepress/plugin-nprogress": "^1.2.0",
|
||||
"babel-plugin-component": "^1.1.1",
|
||||
"date-fns": "^1.30.1",
|
||||
"vuepress-plugin-baidu-autopush": "^1.0.1",
|
||||
@ -20,12 +20,12 @@
|
||||
"vuepress-plugin-sitemap": "^2.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vuepress/plugin-pwa": "^1.0.0-rc.1",
|
||||
"@vuepress/plugin-pwa": "^1.2.0",
|
||||
"element-ui": "^2.12.0",
|
||||
"esm": "^3.2.25",
|
||||
"npm": "^6.11.3",
|
||||
"reduce-css-calc": "^2.1.6",
|
||||
"vuepress": "^1.1.0",
|
||||
"vuepress": "^1.2.0",
|
||||
"vuepress-plugin-named-chunks": "^1.0.2"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Kuboard v1.0.x 的更新说明
|
||||
|
||||
|
||||
## v1.0.4-beta.3
|
||||
## v1.0.4-beta.4
|
||||
|
||||
**发布日期**
|
||||
|
||||
@ -11,7 +11,7 @@ Kuboard v1.0.x 的更新说明
|
||||
|
||||
**优化**
|
||||
|
||||
* Secret 填写 docker 地址时,是否要写 http://
|
||||
* 修改提示:创建 docker 仓库的 Secret --> 填写 docker 仓库地址时,请以 http:// 或 https:// 开头
|
||||
|
||||
**BUG 修复**
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ vssueId: 72
|
||||
description: 本文描述了Kuboard_v1.0.x的版本变更说明
|
||||
---
|
||||
|
||||
# Kuboardv1.0.x
|
||||
# Kuboard v1.0.x
|
||||
|
||||
<AdSenseTitle/>
|
||||
|
||||
|
||||
127
support/index copy.md
Normal file
127
support/index copy.md
Normal file
@ -0,0 +1,127 @@
|
||||
---
|
||||
lessAds: true
|
||||
vssueId: 71
|
||||
description: Kubernetes教程_本文描述了如何获得Kuboard授权
|
||||
---
|
||||
|
||||
# Kuboard
|
||||
|
||||
<AdSenseTitle/>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
methods: {
|
||||
mailGroup () {
|
||||
// console.log('dee')
|
||||
// window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us20.list-manage.com","uuid":"2273cb19eb20bb1bc5b7745a7","lid":"f1f25d6dac","uniqueMethods":true}) })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
## Kuboard 授权声明
|
||||
|
||||
<grid :rwd="{compact: 'stack'}">
|
||||
<grid-item size="2/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
|
||||
* 许多网友在问,Kuboard收费么?
|
||||
* 使用 Kuboard 是 <font color="red">免费</font> 的,无论您是用于学习还是用于生产
|
||||
* 将来会推出 Kuboard Plus,当前所有的功能,将来仍然免费。Kuboard Plus 侧重点:
|
||||
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
|
||||
* 审计日志
|
||||
* 只要您在本文末尾的评论区留下公司名字,您就已经 **取得将 Kuboard 用于生产环境的授权**
|
||||
|
||||
</el-card>
|
||||
|
||||
</grid-item>
|
||||
<grid-item size="1/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
|
||||
<span style="font-size: 16px; font-weight: 500;">输入邮件地址,可以获得:</span>
|
||||
* Kubernetes 漏洞及补丁通知
|
||||
* Kuboard 更新通知
|
||||
<!-- Begin Mailchimp Signup Form -->
|
||||
<link href="//cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css" rel="stylesheet" type="text/css" async>
|
||||
<style type="text/css">
|
||||
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%; text-align: left}
|
||||
/* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.
|
||||
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
|
||||
</style>
|
||||
<div id="mc_embed_signup">
|
||||
<form action="https://foxmail.us20.list-manage.com/subscribe/post?u=2273cb19eb20bb1bc5b7745a7&id=f1f25d6dac" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate
|
||||
style="text-align: left;">
|
||||
<div id="mc_embed_signup_scroll">
|
||||
<input style="width: 210px;" type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="邮件地址" required>
|
||||
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
|
||||
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_2273cb19eb20bb1bc5b7745a7_f1f25d6dac" tabindex="-1" value=""></div>
|
||||
<div class="clear"><input type="submit" value="订阅" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--End mc_embed_signup-->
|
||||
|
||||
</el-card>
|
||||
</grid-item>
|
||||
</grid>
|
||||
|
||||
<!-- <KuboardLiscense></KuboardLiscense> -->
|
||||
|
||||
## Kuboard 采纳情况
|
||||
|
||||
<div style="padding: 1rem 0;">
|
||||
<grid :rwd="{compact: 'stack'}">
|
||||
<grid-item size="2/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
<el-card style="height: 100%; margin-top: 1rem;" shadow="none">
|
||||
<img src="./index.assets/stars.png" alt="Kubernetes教程_Kuboard_Github_Star">
|
||||
</el-card>
|
||||
</grid-item>
|
||||
<grid-item size="1/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
<li>Kuboard 诞生于大型微服务项目的落地实施,在其发布之前,就已经在许多个实际项目中经受住了考验</li>
|
||||
<li>Kuboard 于2019年8月初公开发布,两个月时间就已经获得了 559 Github Star(如图所示),当前 <StarCount></StarCount></li>
|
||||
<li>Kuboard 社群中,已有许多的用户将 Kuboard 用于自己的生产环境</li>
|
||||
</el-card>
|
||||
</grid-item>
|
||||
</grid>
|
||||
</div>
|
||||
|
||||
## Kuboard 商业支持
|
||||
|
||||
<div style="padding: 1rem 0;">
|
||||
<grid :rwd="{compact: 'stack'}">
|
||||
<grid-item size="2/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
<h3>服务范围</h3>
|
||||
<li>Kubernetes 企业培训</li>
|
||||
<li>DevOps 环境搭建及培训</li>
|
||||
<li>SpringCloud 微服务架构咨询</li>
|
||||
<li>Kubernetes 投产支持及问题解决</li>
|
||||
<li>Kuboard 定制化</li>
|
||||
</el-card>
|
||||
</grid-item>
|
||||
<grid-item size="1/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
<el-card style="height: 100%; margin-top: 1rem;" shadow="none">
|
||||
<h3>联系方式</h3>
|
||||
<img src="/images/dz2.jpeg" style="width: 200px; margin: auto;"></img>
|
||||
</el-card>
|
||||
</grid-item>
|
||||
</grid>
|
||||
</div>
|
||||
|
||||
<!-- ### 微服务落地咨询
|
||||
|
||||
Kuboard 团队提供微服务实施落地的全过程咨询和实施,服务范围:
|
||||
<p>
|
||||
<img src="./consulting.png">
|
||||
</p>
|
||||
|
||||
如有需要请加微信:
|
||||
|
||||
<p>
|
||||
<img src="/images/dz2.jpeg" style="width: 200px;"></img>
|
||||
</p> -->
|
||||
@ -8,13 +8,44 @@ description: Kubernetes教程_本文描述了如何获得Kuboard授权
|
||||
|
||||
<AdSenseTitle/>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
methods: {
|
||||
mailGroup () {
|
||||
// console.log('dee')
|
||||
// window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us20.list-manage.com","uuid":"2273cb19eb20bb1bc5b7745a7","lid":"f1f25d6dac","uniqueMethods":true}) })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
## Kuboard 授权声明
|
||||
|
||||
<grid :rwd="{compact: 'stack'}">
|
||||
<grid-item size="2/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
|
||||
* 许多网友在问,Kuboard收费么?
|
||||
* 使用 Kuboard 是 <font color="red">免费</font> 的,无论您是用于学习还是用于生产
|
||||
* 将来会推出 Kuboard Plus,当前所有的功能,将来仍然免费。Kuboard Plus 侧重点:
|
||||
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
|
||||
* 审计日志
|
||||
* 只要您在本文末尾的评论区留下公司名字,您就已经 **取得将 Kuboard 用于生产环境的授权**
|
||||
|
||||
</el-card>
|
||||
|
||||
</grid-item>
|
||||
<grid-item size="1/3" :rwd="{tablet: '1/1', compact: '1/1'}">
|
||||
|
||||
<el-card style="height: 100%; color: #2c3e50; line-height: 1.7; margin-top: 1rem;" shadow="none">
|
||||
|
||||
</el-card>
|
||||
</grid-item>
|
||||
</grid>
|
||||
|
||||
<!-- <KuboardLiscense></KuboardLiscense> -->
|
||||
|
||||
## Kuboard 采纳情况
|
||||
|
||||
|
||||
Reference in New Issue
Block a user