调整结构

This commit is contained in:
huanqing.shao
2019-09-14 23:00:19 +08:00
parent b87d147524
commit a23e1fb75f
40 changed files with 706 additions and 48 deletions

View File

@ -70,7 +70,7 @@ module.exports = {
{ text: '安装', link: '/install/install-dashboard' },
{ text: '学习', link: '/learning/' },
{ text: '使用', link: '/guide/' },
{ text: '微服务', link: '/micro-service/overview/kuboard-view-of-k8s.html' },
{ text: '支持', link: '/support/' },
// { text: '博客', link: 'https://blog.kuboard.cn/compaign' }
// { text: 'DevOps', link: '/devops/' }
],
@ -112,14 +112,15 @@ module.exports = {
'why-kuboard',
'concepts'
]
}, {
title: '技术支持',
collapsable: false,
children: [
'support',
'change-log'
]
}
},
// {
// title: '技术支持',
// collapsable: false,
// children: [
// 'support',
// 'change-log'
// ]
// }
],
'/articles/': [
@ -137,6 +138,7 @@ module.exports = {
title: '安装 Kubernetes',
collapsable: false,
children: [
'install-docker-desktop',
['install-k8s', '安装 Kubernetes 单Master节点'],
'install-kubernetes',
['install-k8s-upgrade', '升级 Kubernetes 集群'],
@ -212,6 +214,18 @@ module.exports = {
'k8s-intermediate/workload/wl-statefulset/scaling.html',
'k8s-intermediate/workload/wl-statefulset/update.html',
]
},
{
title: '控制器 - DaemonSet',
collapsable: true,
children: [
'k8s-intermediate/workload/wl-daemonset/',
'k8s-intermediate/workload/wl-daemonset/create',
'k8s-intermediate/workload/wl-daemonset/schedule',
'k8s-intermediate/workload/wl-daemonset/communicate',
'k8s-intermediate/workload/wl-daemonset/update',
'k8s-intermediate/workload/wl-daemonset/alternative',
]
}
// 'k8s-intermediate/workload/wl-daemonset',
// 'k8s-intermediate/workload/wl-job',
@ -252,6 +266,27 @@ module.exports = {
}
]
},
{
title: 'Kubernetes 实战',
collapsable: false,
children: [
{
title: '概述',
collapsable: false,
children: [
'k8s-practice/micro-service/kuboard-view-of-k8s'
]
},
{
title: 'Spring Cloud',
collapsable: false,
children: [
'k8s-practice/spring-cloud/',
// 'spring-cloud/cloud-eureka'
]
},
]
}
],
'/guide/': [
@ -310,23 +345,22 @@ module.exports = {
]
},
],
'/micro-service/': [
'/support/': [
{
title: '概述',
title: '授权/支持',
collapsable: false,
children: [
'overview/kuboard-view-of-k8s'
'',
]
},
{
title: 'Spring Cloud',
title: '更新说明',
collapsable: false,
children: [
'spring-cloud/',
// 'spring-cloud/cloud-eureka'
'change-log/v1.0.x',
]
},
}
],
'/devops/': [
@ -339,10 +373,6 @@ module.exports = {
}
],
'/support/': [
'',
'change-log'
],
}
}
}

View File

@ -21,8 +21,8 @@
<div class="side-nav-item" :style="activeLinkStyle('/guide/')">
<a href="/guide/" class="nav-link">使用</a>
</div>
<div class="side-nav-item" :style="activeLinkStyle('/micro-service/')">
<a href="/micro-service/overview/kuboard-view-of-k8s.html" class="nav-link">微服务</a>
<div class="side-nav-item" :style="activeLinkStyle('/support/')">
<a href="/support/" class="nav-link">支持</a>
</div>
<!-- <div class="side-nav-item" :style="activeLinkStyle('/noactive/')">
<a href="https://blog.kuboard.cn/compaign/" target="_blank" class="nav-link">博客</a>

View File

@ -21,8 +21,8 @@
<div class="side-nav-item" :style="activeLinkStyle('/guide/')">
<a href="/guide/" class="nav-link">使用</a>
</div>
<div class="side-nav-item" :style="activeLinkStyle('/micro-service/')">
<a href="/micro-service/overview/kuboard-view-of-k8s.html" class="nav-link">微服务</a>
<div class="side-nav-item" :style="activeLinkStyle('/support/')">
<a href="/support/" class="nav-link">支持</a>
</div>
<!-- <div class="side-nav-item" :style="activeLinkStyle('/noactive/')">
<a href="https://blog.kuboard.cn/compaign/" target="_blank" class="nav-link">博客</a>

View File

@ -28,7 +28,9 @@ storyBook:
如果没有 Kubernetes 集群:
* 初学者, 请参考 [安装 Kubernetes 单Master节点](install-k8s.html)
* 初学者, 请参考
* [在 Windows/Mac 安装 Kubernetes 测试集群](install-docker-desktop.html)
* [安装 Kubernetes 单Master节点](install-k8s.html)
* 用于生产,请参考 [安装 Kubernetes 高可用](install-kubernetes.html)
## 兼容性

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -0,0 +1,47 @@
---
description: 本文介绍了如何在 Windows/Mac 电脑安装 Kubernetes 测试集群
---
# 安装 Kubernetes 测试集群 Win/Mac
只需要一台笔记本/台式机,就可以拥有一台用于学习的 Kubernetes 集群。单台机器可以用于学习 Kubernetes但是单台机器始终玩不出集群的感觉...
## 前提
如果您的笔记本/台式机电脑的性能足够强劲(内存不低于 8G您可以直接安装 docker-desktop并启用其中内嵌的 Kubernetes 集群,用做学习、测试,也可以用作日常开发。
## 下载 docker-desktop
从 docker 官网下载 [docker-desktop](https://hub.docker.com/?overlay=onboarding),并完成安装
## 启用 Kubernetes 集群
:::: tabs type:border-card
::: tab MAC
* **启动 docker-desktop**
* **打开 docker-desktop 的 preference 面板**
<p>
<img src="./install-docker-desktop.assets/image-20190914223622217.png" style="max-width: 600px;"/>
</p>
* **切换到 Kubernetes 标签页**
并勾选启动 **Enable Kubernetes**,点击 **Apply**
<p>
<img src="./install-docker-desktop.assets/image-20190914223501758.png" style="max-width: 600px;"/>
</p>
:::
::: tab Windows
具体操作与 Mac 的操作过程相似,已有许多网友验证过。作者使用的是 MAC 电脑,所以未能提供 Windows 上的截图。
:::
::::

View File

@ -37,7 +37,7 @@ description: Kubernetes 免费教程
* [控制器 - 概述](/learning/k8s-intermediate/workload/workload.html)
* [控制器 - Deployment](/learning/k8s-intermediate/workload/wl-deployment/)
* [控制器 - StatefulSet](/learning/k8s-intermediate/workload/wl-statefulset/)
* [控制器 - DaemonSet](/learning/k8s-intermediate/workload/wl-daemonset/) <Badge text="正在撰写" type="warn"/>
* [控制器 - DaemonSet](/learning/k8s-intermediate/workload/wl-daemonset/)
* [控制器 - Job](/learning/k8s-intermediate/workload/wl-job/) <Badge text="正在撰写" type="warn"/>
* [控制器 - CronJob](/learning/k8s-intermediate/workload/wl-cronjob/) <Badge text="正在撰写" type="warn"/>
* 服务发现、负载均衡、网络
@ -58,12 +58,19 @@ description: Kubernetes 免费教程
* [污点和容忍 taints and toleration](/learning/k8s-intermediate/config/taints-and-toleration.html) <Badge text="正在撰写" type="warn"/>
* [Secrets](/learning/k8s-intermediate/config/secret.html) <Badge text="正在撰写" type="warn"/>
## **Kubernetes 高级**
* Kubernetes 日志可视化
* Kubernetes 监控
* Kubernetes 联邦
## **Kubernetes 实战**
[从微服务视角理解 Kubernetes](/learning/k8s-practice/micro-service/kuboard-view-of-k8s.html)
在 Kubernetes 上部署 Spring Cloud 微服务:
* [概述](/micro-service/spring-cloud/)
* [概述](/learning/k8s-practice/spring-cloud/)
* [部署服务注册中心]
* [部署数据库]
* [部署微服务]

View File

@ -0,0 +1,6 @@
---
layout: LearningLayout
description: 本文描述了如何配置 Kubernetes 联邦
---
# Kubernetes 联邦

View File

@ -0,0 +1,6 @@
---
layout: LearningLayout
description: 本文描述了如何配置 Kubernetes 日志
---
# Kubernetes 日志

View File

@ -0,0 +1,6 @@
---
layout: LearningLayout
description: 本文描述了如何配置 Kubernetes 监控
---
# Kubernetes 监控

View File

@ -0,0 +1,23 @@
---
description: 本文描述了 Kuboard 如何处理 Kubernetes 容器组
---
# 容器组 - Kuboard
## 通过 Kuboard 创建容器组
由于在 Kubernetes 中任何时候都是不推荐用户直接创建容器组而是应该通过控制器创建容器组Kuboard 管理工具并不提供直接创建容器组的界面,而是通过 **工作负载编辑器** 创建 Deployment、StatefulSet、DaemonSet 等方式来创建容器组。
在 Kuboard **工作负载编辑器** 中,容器组的概念处于如下图所示的位置:
在 Kuboard **工作负载编辑器** 界面中,容器组的 template 由界面中的如下几个部分指定:
## 通过 Kuboard 查看容器组
Kuboard 中,有两种方式可以查看容器组的信息:
* 通过 **工作负载编辑器** 显示界面查看
* 通过 **容器组列表** 查看
## 工作负载编辑器
## 容器组列表

View File

@ -0,0 +1,44 @@
---
layout: LearningLayout
description: 本文描述了 Kubernetes DaemonSet 的概念、行为及用法
---
# DaemonSet 的替代选项
> 参考文档: Kubernetes 官网文档 [Alternatives to DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#alternatives-to-daemonset)
DaemonSet 有如下替代选项可以选择
## Init Scripts
您可以通过脚本(例如,`init``upstartd``systemd`直接在节点上启动一个守护进程。相对而言DaemonSet 在处理守护进程时,有如下优势:
* 使用与应用程序相同的方式处理守护进程的日志和监控
* 使用与应用程序相同的配置语言和工具例如Pod template、kubectl处理守护进程
* 在容器中运行守护进程,可为守护进程增加 resource limits 等限定
## Pods
您可以直接创建 Pod并指定其在某一个节点上运行。相对而言使用 DaemonSet 可获得如下优势:
* Pod 终止后DaemonSet 可以立刻新建 Pod 以顶替已终止的 Pod。Pod 终止的原因可能是:
* 节点故障
* 节点停机维护
## 静态 Pod
您可以在 Kubelet 监听的目录下创建一个 Pod 的 yaml 文件,这种形式的 Pod 叫做 [静态 Podstatic pod](https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/)。与 DaemonSet 不同,静态 Pod 不能通过 kubectl 或者 Kuboard 进行管理。静态 Pod 不依赖 Kubernetes APIServer 的特点,使得它在引导集群启动的过程中非常有用。
::: warning
静态 Pod 将来可能被不推荐使用 deprecated
:::
## Deployment
DaemonSet 和 Deployment 一样,他们都创建长时间运行的 Pod例如 web server、storage server 等)
* Deployment 适用于无状态服务例如前端程序对于这些程序而言扩容scale up/ 缩容scale down、滚动更新等特性比精确控制 Pod 所运行的节点更重要。
* DaemonSet 更适合如下情况:
* Pod 的副本总是在所有(或者部分指定的)节点上运行
* 需要在其他 Pod 启动之前运行

View File

@ -0,0 +1,15 @@
---
layout: LearningLayout
description: 本文描述了 Kubernetes DaemonSet 的概念、行为及用法
---
# 与 DaemonSet 通信
> 参考文档 Kubernetes 官网文档 [Communicating with Daemon Pods](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#communicating-with-daemon-pods)
与 DaemonSet 容器组通信的模式有:
* **Push** DaemonSet 容器组用来向另一个服务推送信息,例如数据库的统计信息。这种情况下 DaemonSet 容器组没有客户端
* **NodeIP + Port** DaemonSet 容器组可以使用 `hostPort`,此时可通过节点的 IP 地址直接访问该容器组。客户端需要知道节点的 IP 地址,以及 DaemonSet 容器组的 端口号
* **DNS** 创建一个 [headless service](https://kubernetes.io/docs/concepts/services-networking/service/#headless-services),且该 Service 与 DaemonSet 有相同的 Pod Selector。此时客户端可通过该 Service 的 DNS 解析到 DaemonSet 的 IP 地址
* **Service** 创建一个 Service且该 Service 与 DaemonSet 有相同的 Pod Selector客户端通过该 Service可随机访问到某一个节点上的 DaemonSet 容器组

View File

@ -0,0 +1,96 @@
---
layout: LearningLayout
description: 本文描述了 Kubernetes 中如何创建 DaemonSet
---
# 创建 DaemonSet
## YAML 示例
下面是 DaemonSet 的 YAML 文件示例 daemonset.yaml。该例子中的 DaemonSet 运行了一个 fluentd-elasticsearch 的 docker 镜像:
``` yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: fluent/fluentd-kubernetes-daemonset:v1.7.1-debian-syslog-1.0
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
```
执行如下命令可创建该 DaemonSet
``` sh
kubectl apply -f ./daemonset.yaml
```
## 必填字段
与其他所有 Kubernetes API 对象相同DaemonSet 需要如下字段:
* apiVersion
* kind
* metadata
除此之外DaemonSet 还需要 `.spec` 字段
## Pod Template
`.spec.template` 是必填字段,定义了 Pod 的模板,与定义 Pod 的 yaml 格式完全相同(除了内嵌在 DaemonSet 中以外,没有 kind、APIVersion 字段以外)。
在 DaemonSet 中,您必须指定 `.spec.template.metadata.labels` 字段和 `.spec.tempalte.spec` 字段。
DaemonSet 的 `.spec.template.spec.restartPolicy` 字段必须为 Always或者不填默认值为 Always
## Pod Selector
`.spec.selector` 字段定义了 DaemonSet 的 pod selectorDaemonSet 认为符合该选择器的 Pod 由其管理。
自 Kubernets v1.8 以后,`.spec.selector` 是必填字段,且您指定该字段时,必须与 `.spec.template.metata.labels` 字段匹配(不匹配的情况下创建 DaemonSet 将失败。DaemonSet 创建以后,`.spec.selector` 字段就不可再修改。如果修改,可能导致不可预见的结果。
`.spec.selector` 由两个字段组成:
* matchLabels <Badge text="Kuboard 已支持" type="success"/>
* matchExpressions <Badge text="Kuboard 暂不支持" type="warn"/> 通过指定 key、value列表以及运算符可以构造更复杂的选择器
如果两个字段同时存在,则必须同时满足两个条件的 Pod 才被选中。
任何情况下,您不能以任何方式创建符合 DaemonSet 的 `.spec.selector` 选择器的 Pod。否则 DaemonSet Controller 会认为这些 Pod 是由它创建的。这将导致不可预期的行为出现。
## 只在部分节点上运行
指定 `.spec.template.spec.nodeSelector` <Badge text="Kuboard 已支持" type="success"/>DaemonSet Controller 将只在指定的节点上创建 Pod (参考 [节点选择器 nodeSelector](/learning/k8s-intermediate/config/assign-pod-node.html#节点选择器-nodeselector))。同样的,如果指定 `.spec.template.spec.affinity` <Badge text="Kuboard 暂不支持" type="warn"/>DaemonSet Controller 将只在与 [node affinity](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) 匹配的节点上创建 Pod。

View File

@ -3,6 +3,27 @@ layout: LearningLayout
description: 本文描述了 Kubernetes DaemonSet 的概念、行为及用法
---
# 控制器 - DaemonSet
# 介绍 DaemonSet
正在撰写...
> 参考文档: Kubernetes 官网文档 [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)
DaemonSet 控制器确保所有(或一部分)的节点都运行了一个指定的 Pod 副本。
* 每当向集群中添加一个节点时,指定的 Pod 副本也将添加到该节点上
* 当节点从集群中移除时Pod 也就被垃圾回收了
* 删除一个 DaemonSet 可以清理所有由其创建的 Pod
DaemonSet 的典型使用场景有:
* 在每个节点上运行集群的存储守护进程,例如 glusterd、ceph
* 在每个节点上运行日志收集守护进程,例如 fluentd、logstash
* 在每个节点上运行监控守护进程,例如 [Prometheus Node Exporter](https://github.com/prometheus/node_exporter)、[Sysdig Agent](https://sysdigdocs.atlassian.net/wiki/spaces/Platform)、collectd、[Dynatrace OneAgent](https://www.dynatrace.com/technologies/kubernetes-monitoring/)、[APPDynamics Agent](https://docs.appdynamics.com/display/CLOUD/Container+Visibility+with+Kubernetes)、[Datadog agent](https://docs.datadoghq.com/agent/kubernetes/daemonset_setup/)、[New Relic agent](https://docs.newrelic.com/docs/integrations/kubernetes-integration/installation/kubernetes-installation-configuration)、Ganglia gmond、[Instana Agent](https://www.instana.com/supported-integrations/kubernetes-monitoring/) 等
通常情况下,一个 DaemonSet 将覆盖所有的节点。复杂一点儿的用法,可能会为某一类守护进程设置多个 DaemonSets每一个 DaemonSet 针对不同类硬件类型设定不同的内存、cpu请求。
本文从以下几方面介绍 DaemonSet
* [创建 DaemonSet](./create.html)
* [DaemonSet 是如何调度的](./schedule.html)
* [与 DaemonSet 通信](./communicate.html)
* [更新 DaemonSet](./update.html)
* [DaemonSet 的替代选项](./alternative.html)

View File

@ -0,0 +1,54 @@
---
layout: LearningLayout
description: 本文描述了 Kubernetes DaemonSet 如何调度 Pod
---
# DaemonSet 是如何调度的
> 参考文档 Kubernetes 官网文档 [How Daemon Pods are Scheduled](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#how-daemon-pods-are-scheduled)
## 由 DaemonSet 控制器调度
**v1.12以后默认禁用**
通常Kubernetes Scheduler调度器决定了 Pod 在哪个节点上运行。然而 DaemonSet Controller 创建的 Pod 已经指定了 `.spec.nodeName` 字段,因此:
* Node 节点的 [unschedulable](https://kubernetes.io/docs/concepts/architecture/nodes/#manual-node-administration) 字段将被 DaemonSet Controller 忽略
* DaemonSet Controller 可以在 kubernetes scheduler 启动之前创建 Pod这个特性在引导集群启动的时候非常有用集群使用者无需关心
## 由默认调度器调度
**v1.12以后默认启用**
DaemonSet 确保所以符合条件的节点运行了一个指定的 Pod。通常Kubernetes Scheduler 决定 Pod 在哪个节点上运行。然而如果 DaemonSet 的 Pod 由 DaemonSet Controller 创建和调度,会引发如下问题:
* Pod 的行为不一致:普通的 Pod 在创建后处于 **Pending** 状态,并等待被调度,但是 DaemonSet Pod 创建后,初始状态不是 **Pending**。这会使用户感到困惑
* [Pod 的优先权preemption](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/) 由 kubernetes 调度器处理。如果 Pod 优先权被启用DaemonSet Controller 在创建和调度 Pod 时,不会考虑 Pod 的优先权
Kubernetes v1.12 版本以后,默认通过 kubernetes 调度器来调度 DaemonSet 的 Pod。DaemonSet Controller 将会向 DaemonSet 的 Pod 添加 `.spec.nodeAffinity` 字段,而不是 `.spec.nodeName` 字段,并进一步由 kubernetes 调度器将 Pod 绑定到目标节点。如果 DaemonSet 的 Pod 已经存在了 `nodeAffinity` 字段,该字段的值将被替换。
``` yaml
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: metadata.name
operator: In
values:
- target-host-name
```
此外, `node.kubernetes.io/unschedulable:NoSchedule` 容忍([toleration](/learning/k8s-intermediate/config/taints-and-toleration.html))将被自动添加到 DaemonSet 的 Pod 中。由此,默认调度器在调度 DaemonSet 的 Pod 时可以忽略节点的 **unschedulable** 属性
## 污点和容忍
在调度 DaemonSet 的 Pod 时,污点和容忍([taints and tolerations](/learning/k8s-intermediate/config/taints-and-toleration.html)会被考量到同时以下容忍toleration将被自动添加到 DaemonSet 的 Pod 中:
| Toleration Key | Effect | Version | 描述 |
| -------------------------------------- | ---------- | ------- | ------------------------------------------------------------ |
| node.kubernetes.io/not-ready | NoExecute | 1.13+ | 节点出现问题时例如网络故障DaemonSet 容器组将不会从节点上驱逐 |
| node.kubernetes.io/unreachable | NoExecute | 1.13+ | 节点出现问题时例如网络故障DaemonSet 容器组将不会从节点上驱逐 |
| node.kubernetes.io/disk-pressure | NoSchedule | 1.8+ | |
| node.kubernetes.io/memory-pressure | NoSchedule | 1.8+ | |
| node.kubernetes.io/unschedulable | NoSchedule | 1.12+ | 默认调度器针对 DaemonSet 容器组,容忍节点的 `unschedulable `属性 |
| node.kubernetes.io/network-unavailable | NoSchedule | 1.12+ | 默认调度器针对 DaemonSet 容器组,在其使用 host network 时,容忍节点的 `network-unavailable` 属性 |

View File

@ -0,0 +1,23 @@
---
layout: LearningLayout
description: 本文描述了 Kubernetes DaemonSet 的概念、行为及用法
---
# 更新 DaemonSet
> 参考文档 Kubernetes 官网文档 [Updating a DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#updating-a-daemonset)
## 更新信息
* 在改变节点的标签时:
* 如果该节点匹配了 DaemonSet 的 `.spec.template.spec.nodeSelector`DaemonSet 将会在该节点上创建一个 Pod
* 如果该节点原来匹配 DaemonSet 的 `.spec.template.spec.nodeSelector`现在不匹配了DaemonSet 将会删除该节点上对应的 Pod
* 您可以修改 DaemonSet 的 Pod 的部分字段但是DaemonSet 控制器在创建新的 Pod 时,仍然会使用原有的 Template 进行 Pod 创建。
* 您可以删除 DaemonSet。如果在 `kubectl` 命令中指定 `--cascade=false` 选项DaemonSet 容器组将不会被删除。紧接着,如果您创建一个新的 DaemonSet与之前删除的 DaemonSet 有相同的 `.spec.selector`,新建 DaemonSet 将直接把这些未删除的 Pod 纳入管理。DaemonSet 根据其 `updateStrategy` 决定是否更新这些 Pod
## 执行滚动更新
https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/

View File

@ -47,7 +47,7 @@ spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
image: nginx:1.7.9
ports:
- containerPort: 80
name: web

View File

@ -5,6 +5,8 @@ description: 本文描述了 Kubernetes StatefulSet 的概念、行为及用法
# StatefulSet 的使用场景
> 参考文档: Kubernetes 官网文档 [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
## StatefulSet 概述
StatefulSet 顾名思义,用于管理 Stateful有状态的应用程序。

View File

@ -1,4 +1,5 @@
---
layout: LearningLayout
description: 本文描述了一个经典微服务参考架构,并且通过三个视图(集群概览、名称空间、工作负载)理解微服务与 Kubernetes 的映射关系。
---
@ -188,6 +189,4 @@ Kuboard 产生于 Spring Cloud 微服务落地的实践中,并在许多的实
* 工作负载视图
* 监控视图
Kuboard 在实际项目中经过多次历练,功能不断完善,成长为一个基于 Kubernetes 的成熟的微服务管理工具。自 www.kuboard.cn 推出以来,得到了众多网友非常多的反馈,碰到问题,可以通过 Kuboard 社群得到支持,如需要获得商业支持请通过微信联系作者
![作者微信](../../overview/change-log.assets/wechat.jpeg)
Kuboard 在实际项目中经过多次历练,功能不断完善,成长为一个基于 Kubernetes 的成熟的微服务管理工具。自 www.kuboard.cn 推出以来,得到了众多网友非常多的反馈,碰到问题,可以通过 Kuboard 社群得到支持。

View File

@ -1,4 +1,5 @@
---
layout: LearningLayout
description: 微服务参考架构:包含微服务运行时、构建及测试、部署及运维、监控及评估。设计和研发 Kuboard 的初心便源于此 Spring Cloud 微服务参考架构。
---

View File

@ -101,17 +101,17 @@ description: 介绍 Kuboard - Kubernetes 微服务管理界面,并为 Kubernet
Kuboard 为 Kubernetes 初学者设计了如下学习路径:
* **Kubernetes 体验**
**Kubernetes 体验**
* [安装 Kubernetes 单Master节点](/install/install-k8s.html) 30分钟初学者也许需要更多
* 参照经过众多网友验证,不断优化的安装文档,迅速完成 Kubernetes 安装,拥有属于自己的 Kubernetes 集群。
* [安装 Kuboard](/install/install-dashboard.html) 5分钟
* [安装微服务管理界面](/install/install-dashboard.html) 5分钟
* 使用 Kuboard无需编写复杂冗长的 YAML 文件,就可以轻松管理 Kubernetes 集群。
* [创建 busybox](/guide/example/busybox.html) 10分钟
* 快速在 Kubernetes 集群中安装一个部署,并与当中的容器组交互。
* [导入 example 微服务应用](/guide/example/import.html) 15分钟
* 导入一个完整的 example 微服务应用,体验 Spring Cloud 在 Kubernetes 上的部署过程。
* **Kubernetes 入门**
**Kubernetes 入门**
* [0. 学习Kubernetes基础知识](/learning/k8s-basics/kubernetes-basics.html) (10分钟)
* [1. 部署第一个应用程序](/learning/k8s-basics/deploy-app.html) (5分钟)
* [2. 查看 Pods / Nodes](/learning/k8s-basics/explore.html) (10分钟)
@ -120,7 +120,7 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径:
* [5. 执行滚动更新](/learning/k8s-basics/update.html) (10分钟)
* [6. 复习Kubernetes核心概念](/learning/k8s-basics/k8s-core-concepts.html) (10分钟)
* **Kubernetes 进阶**
**Kubernetes 进阶**
* [使用私有 registry 中的 docker 镜像](/learning/k8s-intermediate/private-registry.html)
* 工作负载
* [容器组 - 概述](/learning/k8s-intermediate/workload/pod.html)
@ -129,7 +129,7 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径:
* [控制器 - 概述](/learning/k8s-intermediate/workload/workload.html)
* [控制器 - Deployment](/learning/k8s-intermediate/workload/wl-deployment/)
* [控制器 - StatefulSet](/learning/k8s-intermediate/workload/wl-statefulset/)
* [控制器 - DaemonSet](/learning/k8s-intermediate/workload/wl-daemonset/) <Badge text="正在撰写" type="warn"/>
* [控制器 - DaemonSet](/learning/k8s-intermediate/workload/wl-daemonset/)
* [控制器 - Job](/learning/k8s-intermediate/workload/wl-job/) <Badge text="正在撰写" type="warn"/>
* [控制器 - CronJob](/learning/k8s-intermediate/workload/wl-cronjob/) <Badge text="正在撰写" type="warn"/>
* 服务发现、负载均衡、网络
@ -150,18 +150,26 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径:
* [污点和容忍 taints and toleration](/learning/k8s-intermediate/config/taints-and-toleration.html) <Badge text="正在撰写" type="warn"/>
* [Secrets](/learning/k8s-intermediate/config/secret.html) <Badge text="正在撰写" type="warn"/>
**Kubernetes 高级**
* **Kubernetes 实战**
* Kubernetes 日志可视化
* Kubernetes 监控
* Kubernetes 联邦
Kubernetes 上部署 Spring Cloud 微服务:
**Kubernetes 实战**
[从微服务视角理解 Kubernetes](/learning/k8s-practice/micro-service/kuboard-view-of-k8s.html)
在 Kubernetes 上部署 Spring Cloud 微服务:
* [概述](/learning/k8s-practice/spring-cloud/)
* [部署服务注册中心]
* [部署数据库]
* [部署微服务]
* [部署服务网关]
* [部署Web前端]
* [管理多环境]
* [概述](/micro-service/spring-cloud/)
* [部署服务注册中心]
* [部署数据库]
* [部署微服务]
* [部署服务网关]
* [部署Web前端]
* [管理多环境]
### Kubernetes 有经验者

View File

@ -4,6 +4,10 @@ description: Kuboard 更新日志的详细信息
# 更新日志
::: danger 页面已迁移
本页面已迁移到 [Kuboard 更新日志](/support/change-log/v1.0.x.html)
:::
## v1.0.3-beta.1
**发布日期**

View File

@ -0,0 +1,221 @@
---
description: 本文描述了 Kuboard v1.0.x 的版本变更说明
---
# Kuboard v1.0.x
Kuboard v1.0.x 的更新说明
## v1.0.3-beta.1
**发布日期**
2019年9月11日
**新特性**
* 设置菜单中可查看 kubernetes 版本信息
**BUG 修复**
* 创建 NFS 时MountOptions 应该是可填选项
## v1.0.2
**发布日期**
2019-09-01
**优化**
* 页头增加返回名称空间的导航
## v1.0.2-beta.5
**发布日期**
2019-08-29
**优化**
* 工作负载编辑器 - 容器env 支持 ConfigMapKeyRef
* 工作负载编辑器 - 容器env 支持 SecretKeyRef
## v1.0.2-beta.4
**发布日期**
2019-08-28
**新特性**
* 工作负载编辑器 - 数据卷,支持 ConfigMap 类型
## v1.0.2-beta.3
**发布日期**
2019-08-28
**优化**
* 工作负载查看页,可以查看工作负载对应的 YAML 文件内容
**BUG 修复**
* 工作负载查看页提示访问方式时NodePort的端口号错误
* 在 Safari 浏览器下,页头显示错误
## v1.0.2-beta.2
**发布日期**
2019-08-24
**新特性**
* 就绪检查
* 存活检查
**优化**
* 优化删除确认的输入内容的提示
**BUG 修复**
* 更新版本后,版本号显示仍然为旧版本,需要强制刷新才能显示新版本
* 重复打开预览 YAML 的窗口YAML 内容会不断累加
## v1.0.2-beta.1
**发布日期**
2019-08-21
**BUG 修复**
* Pod 中存在多个 Container 时,不能正常进入 日志界面和终端界面
## v1.0.1
**发布日期**
2019-08-20
**BUG 修复**
* 修复自定义 Kubernetes DNS Domain 时,无法使用监控套件的问题
## v1.0.1-beta.3
**发布日期**
2019-08-18
**新特性**
* 执行变更前预览 YAML
**优化**
* ConfigMap 详情页中使用带行号的代码编辑器
* 工作复杂编辑器 - 显示 Kubernetes Object 名称
**BUG 修复**
* chrome 32位浏览器下工作负载编辑器对服务名称的校验不正常
* 卸载局部监控套件时,显示的标题和提示信息仍然是卸载全局监控套件
* 编辑工作负载时,如果使用了 NFS 数据卷,不能保存的问题
## v1.0.1-beta.2
**发布日期**
2019-08-16
**新特性**
* 工作负载编辑器 - 节点选择,可按 nodeName 或 nodeSelector 指定容器组分配的节点
**优化**
* 节点详情页,编辑节点标签
* 如果与工作服务载相关的最新事件不是 Warning 或者 BackOff则不在工作负载图标上提示错误信息
* 工作负载查看页 - 增加访问提示
**BUG 修复**
* 节点详情页,修复加载进度条显示
* 资源删除对话框,对要删除的资源名称先 trim再比较是否正确
## v1.0.1-beta.1
**发布日期**
2019-08-15
**新特性**
* 工作负载编辑器 - 数据卷,增加 hostPath 类型
**优化**
* 工作负载编辑器 - 服务分层,点击时跳转到微服务参考架构页面
* 工作负载编辑器 - 资源限制,增加格式提示
* 工作负载编辑器 - 容器,可以自定义抓取策略 imagePullPolicy
* NFS 类型的 StorageClass 增加 mountOptions 选项
**BUG 修复**
* 工作负载查看页面 - 接收到容器组变化事件后,容器组详情未触发更新
## v1.0.0
**发布日期**
2019-08-11
**发布说明**
Kuboard 在实际项目中经过多次历练,功能不断完善,成长为一个基于 Kubernetes 的成熟的[微服务管理工具](/articles/201908/kuboard-view-of-k8s.md)。自 www.kuboard.cn 推出以来,得到了众多网友非常多的反馈,在大家的帮助下,修正了许多不同环境下的兼容性问题。今天终于结束了 beta 阶段,发布 **v1.0.0 正式版本**。该版本将是一个<font color="red">**长期支持版本**</font>,碰到问题,可以通过 Kuboard 社群得到支持,如需要获得商业支持请通过微信联系作者。
<!-- ![作者微信](./change-log.assets/wechat.jpeg) -->
**优化**
* 可以通过查询参数中的 k8sToken 字段直接登录系统,无需在登录界面输入 Token
* 例如,如果想要无登录直接访问容器组的控制台,可使用如下格式的 url 进入:
`http://yourip:yourport/#/console/pzy/yourPod?containerName=yourContainer&k8sToken=yourToken`
* 登录界面显示帮助链接
* 登录界面增加记住登录状态选项
* 日志/终端界面增加返回名称空间按钮
## v1.0.0-beta.14
**发布日期**
2019-08-03
**优化**
* 创建 namespace/configmap/secrets/pvc/deployment/Service/Ingress 等 K8S 对象时,对表单中的名字等字段做 trim() 操作
* 修改日志、终端连接错误时的提示信息
## v1.0.0-beta.13
**发布日期**
2019-07-28
**优化**
* 调整主题色
* 查看 Kuboard 版本信息
* 一次删除 Deployment 下所有的错误事件 ([# 1](https://github.com/shaohq/kuboard-issues/issues/1))
**BUG 修复**
* Kubernetes 二进制安装时, Kuboard 无法启动
* Kubernetes 中缺少 kube-dns Service 时, Kuboard 无法启动

43
support/index.md Normal file
View File

@ -0,0 +1,43 @@
---
description: 本文描述了如何获得 Kuboard 授权
---
# Kuboard
## Kuboard 授权声明
* 使用 Kuboard 是免费的,无论您是用于学习还是用于生产
* 将来可能会推出 Kuboard Plus当前所有的功能将来仍然免费。Kuboard Plus 侧重点:
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
* 审计日志
## Kuboard 支持
### 免费支持
<p>
<Qq/>
</p>
<p>
<img src="/images/kuboard_qq.png" />
</p>
### 承诺24小时内答复
<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;">
<span>扫第一个二维码完成打赏,扫第二个进微信群聊。</span>
<p style="margin-top: 10px;">
<img src="/images/dz.png" style="width: 200px; margin-right: 150px;"></img>
<img src="/images/dz2.jpeg" style="width: 200px;"></img>
</p>
</div>
</div>
### 微服务落地咨询
<p>
<img src="/images/dz2.jpeg" style="width: 200px;"></img>
</p>