diff --git a/.vuepress/components/HomePage.vue b/.vuepress/components/HomePage.vue index 893a26d..ee4549f 100644 --- a/.vuepress/components/HomePage.vue +++ b/.vuepress/components/HomePage.vue @@ -77,7 +77,7 @@ import NavLink from '@theme/components/NavLink.vue' export default { components: { NavLink }, mounted () { - window.document.title = 'Kuboard 官网 - Kubernetes k8s 国内安装/部署/入门/免费中文教程/实践/微服务管理界面' + // window.document.title = 'Kuboard 官网 - Kubernetes k8s 国内安装/部署/入门/免费中文教程/实践/微服务管理界面' }, computed: { data () { diff --git a/.vuepress/config.js b/.vuepress/config.js index 0df431c..ab858da 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -1,10 +1,10 @@ let dateFns = require('date-fns') module.exports = { - title: 'Kuboard - Kubernetes 微服务管理界面', + title: 'Kuboard - 快速在 Kubernetes 上落地微服务', description: '一款 Kubernetes Dashboard,简化 Kubernetes 的学习和使用,帮助您快速落地 Kubernetes;提供 Kubernetes 免费中文教程、国内安装文档', head: [ - ['meta', {name: 'keywords', content: 'Kubernetes, Docker, Dashboard, Kuboard, Spring Cloud, micro service, 微服务, Kubernetes 中文教程, Kubernetes 入门, K8S 教程, K8S 入门, 微服务实践, Kubernetes 国内安装, K8S 安装, Kubernetes 安装, Kubernetes 部署'}], + ['meta', {name: 'keywords', content: 'Kubernetes教程,Kubernetes安装,Kubernetes入门,K8S教程,K8S入门,K8S安装'}], ['script', {}, ` var _hmt = _hmt || []; (function() { @@ -234,9 +234,6 @@ module.exports = { 'k8s-intermediate/workload/wl-daemonset/alternative', ] } - // 'k8s-intermediate/workload/wl-daemonset', - // 'k8s-intermediate/workload/wl-job', - // 'k8s-intermediate/workload/wl-cronjob', ] }, { @@ -246,7 +243,7 @@ module.exports = { 'k8s-intermediate/service/service', 'k8s-intermediate/service/service-details', 'k8s-intermediate/service/service-types', - // 'k8s-intermediate/service/dns', + 'k8s-intermediate/service/dns', // 'k8s-intermediate/service/connecting', 'k8s-intermediate/service/ingress', 'k8s-intermediate/service/cni', diff --git a/README.md b/README.md index 25530f1..f636ea2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ --- -home: true +home: false layout: HomePage +title: Kuboard 官网 - Kubernetes k8s 国内安装/部署/入门/免费中文教程/实践/微服务管理界面 actionText: 在线体验 actionText2: 开始使用 → actionLink2: /overview/ @@ -17,13 +18,13 @@ features: Kuboard 是一款基于 Kubernetes 的微服务管理界面。 -提供最新版本的 [Kubernetes (K8S) 安装手册](https://www.kuboard.cn/install/install-k8s.html),协同创作,在线答疑,持续更新。 +提供最新版本的 [Kubernetes (K8S) 安装手册](https://kuboard.cn/install/install-k8s.html),协同创作,在线答疑,持续更新。 点击此处,查看 [Kuboard 安装文档](https://kuboard.cn/install/install-dashboard.html) -[点击查看在线文档](https://www.kuboard.cn/#from_github) +[点击查看在线文档](https://kuboard.cn/#from_github) -![Demo](./overview/README.assets/1564841972085.gif) +![Kubernetes教程:Kuboard在线演示](./overview/README.assets/1564841972085.gif) # Kubernetes 免费教程 @@ -31,44 +32,44 @@ Kuboard 是一款基于 Kubernetes 的微服务管理界面。 本教程的主要依据是:Kubernetes 官网文档,以及使用 Kuboard 落地 Spring Cloud 微服务的实战经验 ## **Kubernetes 入门** - * [0. 学习Kubernetes基础知识](https://www.kuboard.cn/learning/k8s-basics/kubernetes-basics.html) (10分钟) - * [1. 部署第一个应用程序](https://www.kuboard.cn/learning/k8s-basics/deploy-app.html) (5分钟) - * [2. 查看 Pods / Nodes](https://www.kuboard.cn/learning/k8s-basics/explore.html) (10分钟) - * [3. 公布应用程序](https://www.kuboard.cn/learning/k8s-basics/expose.html) (10分钟) - * [4. 伸缩应用程序](https://www.kuboard.cn/learning/k8s-basics/scale.html) (10分钟) - * [5. 执行滚动更新](https://www.kuboard.cn/learning/k8s-basics/update.html) (10分钟) - * [6. 复习Kubernetes核心概念](https://www.kuboard.cn/learning/k8s-basics/k8s-core-concepts.html) (10分钟) + * [0. 学习Kubernetes基础知识](https://kuboard.cn/learning/k8s-basics/kubernetes-basics.html) (10分钟) + * [1. 部署第一个应用程序](https://kuboard.cn/learning/k8s-basics/deploy-app.html) (5分钟) + * [2. 查看 Pods / Nodes](https://kuboard.cn/learning/k8s-basics/explore.html) (10分钟) + * [3. 公布应用程序](https://kuboard.cn/learning/k8s-basics/expose.html) (10分钟) + * [4. 伸缩应用程序](https://kuboard.cn/learning/k8s-basics/scale.html) (10分钟) + * [5. 执行滚动更新](https://kuboard.cn/learning/k8s-basics/update.html) (10分钟) + * [6. 复习Kubernetes核心概念](https://kuboard.cn/learning/k8s-basics/k8s-core-concepts.html) (10分钟) ## **Kubernetes 进阶** - * [使用私有 registry 中的 docker 镜像](https://www.kuboard.cn/learning/k8s-intermediate/private-registry.html) + * [使用私有 registry 中的 docker 镜像](https://kuboard.cn/learning/k8s-intermediate/private-registry.html) * 工作负载 - * [容器组 - 概述](https://www.kuboard.cn/learning/k8s-intermediate/workload/pod.html) - * [容器组 - 生命周期](https://www.kuboard.cn/learning/k8s-intermediate/workload/pod-lifecycle.html) - * [容器组 - 初始化容器](https://www.kuboard.cn/learning/k8s-intermediate/workload/init-container.html) - * [控制器 - 概述](https://www.kuboard.cn/learning/k8s-intermediate/workload/workload.html) - * [控制器 - Deployment](https://www.kuboard.cn/learning/k8s-intermediate/workload/wl-deployment/) - * [控制器 - StatefulSet](https://www.kuboard.cn/learning/k8s-intermediate/workload/wl-statefulset/) - * [控制器 - DaemonSet](https://www.kuboard.cn/learning/k8s-intermediate/workload/wl-daemonset/) - * [控制器 - Job](https://www.kuboard.cn/learning/k8s-intermediate/workload/wl-job/) - * [控制器 - CronJob](https://www.kuboard.cn/learning/k8s-intermediate/workload/wl-cronjob/) + * [容器组 - 概述](https://kuboard.cn/learning/k8s-intermediate/workload/pod.html) + * [容器组 - 生命周期](https://kuboard.cn/learning/k8s-intermediate/workload/pod-lifecycle.html) + * [容器组 - 初始化容器](https://kuboard.cn/learning/k8s-intermediate/workload/init-container.html) + * [控制器 - 概述](https://kuboard.cn/learning/k8s-intermediate/workload/workload.html) + * [控制器 - Deployment](https://kuboard.cn/learning/k8s-intermediate/workload/wl-deployment/) + * [控制器 - StatefulSet](https://kuboard.cn/learning/k8s-intermediate/workload/wl-statefulset/) + * [控制器 - DaemonSet](https://kuboard.cn/learning/k8s-intermediate/workload/wl-daemonset/) + * [控制器 - Job](https://kuboard.cn/learning/k8s-intermediate/workload/wl-job/) + * [控制器 - CronJob](https://kuboard.cn/learning/k8s-intermediate/workload/wl-cronjob/) * 服务发现、负载均衡、网络 - * [Service](https://www.kuboard.cn/learning/k8s-intermediate/service/service.html) - * [Service 详细描述](/learning/k8s-intermediate/service/service-details.html) - * [Service 类型](/learning/k8s-intermediate/service/service-types.html) - * [Service/Pod 的 DNS](https://www.kuboard.cn/learning/k8s-intermediate/service/dns.html) - * [Service 连接应用程序](https://www.kuboard.cn/learning/k8s-intermediate/service/connecting.html) - * [Ingress 通过互联网访问您的应用](https://www.kuboard.cn/learning/k8s-intermediate/service/ingress.html) + * [Service](https://kuboard.cn/learning/k8s-intermediate/service/service.html) + * [Service 详细描述](https://kuboard.cn/learning/k8s-intermediate/service/service-details.html) + * [Service 类型](https://kuboard.cn/learning/k8s-intermediate/service/service-types.html) + * [Service/Pod 的 DNS](https://kuboard.cn/learning/k8s-intermediate/service/dns.html) + * [Service 连接应用程序](https://kuboard.cn/learning/k8s-intermediate/service/connecting.html) + * [Ingress 通过互联网访问您的应用](https://kuboard.cn/learning/k8s-intermediate/service/ingress.html) * 存储 - * [数据卷 Volume](https://www.kuboard.cn/learning/k8s-intermediate/persistent/volume.html) - * [存储卷 PV 和存储卷声明 PVC](https://www.kuboard.cn/learning/k8s-intermediate/persistent/pv.html) - * [存储类 StorageClass](https://www.kuboard.cn/learning/k8s-intermediate/persistent/storage-class.html) - * [自建 NFS 服务](https://www.kuboard.cn/learning/k8s-intermediate/persistent/nfs.html) + * [数据卷 Volume](https://kuboard.cn/learning/k8s-intermediate/persistent/volume.html) + * [存储卷 PV 和存储卷声明 PVC](https://kuboard.cn/learning/k8s-intermediate/persistent/pv.html) + * [存储类 StorageClass](https://kuboard.cn/learning/k8s-intermediate/persistent/storage-class.html) + * [自建 NFS 服务](https://kuboard.cn/learning/k8s-intermediate/persistent/nfs.html) * 配置 - * [使用 ConfigMap 配置您的应用程序](https://www.kuboard.cn/learning/k8s-intermediate/config/config-map.html) - * [管理容器的计算资源](https://www.kuboard.cn/learning/k8s-intermediate/config/computing-resource.html) - * [将容器调度到指定的节点](https://www.kuboard.cn/learning/k8s-intermediate/config/assign-pod-node.html) - * [污点和容忍 taints and toleration](https://www.kuboard.cn/learning/k8s-intermediate/config/taints-and-toleration.html) - * [Secrets](https://www.kuboard.cn/learning/k8s-intermediate/config/secret.html) + * [使用 ConfigMap 配置您的应用程序](https://kuboard.cn/learning/k8s-intermediate/config/config-map.html) + * [管理容器的计算资源](https://kuboard.cn/learning/k8s-intermediate/config/computing-resource.html) + * [将容器调度到指定的节点](https://kuboard.cn/learning/k8s-intermediate/config/assign-pod-node.html) + * [污点和容忍 taints and toleration](https://kuboard.cn/learning/k8s-intermediate/config/taints-and-toleration.html) + * [Secrets](https://kuboard.cn/learning/k8s-intermediate/config/secret.html) ## **Kubernetes 高级** @@ -80,7 +81,7 @@ Kuboard 是一款基于 Kubernetes 的微服务管理界面。 在 Kubernetes 上部署 Spring Cloud 微服务: -* [概述](/micro-service/spring-cloud/) +* [概述](https://kuboard.cn/learning/k8s-practice/spring-cloud) * [部署服务注册中心] * [部署数据库] * [部署微服务] diff --git a/guide/cluster/computing.md b/guide/cluster/computing.md index 5f22ecf..bc6e870 100644 --- a/guide/cluster/computing.md +++ b/guide/cluster/computing.md @@ -21,13 +21,13 @@ description: 使用 Kuboard 管理 Kubernetes 计算节点 登录 Kuboard 之后,即可看到集群中的计算资源列表,在左下角,如下图所示: -![image-20190720224950653](./computing.assets/image-20190720224950653.png) +![Kubernetes教程:Kuboard集群概览页](./computing.assets/image-20190720224950653.png) * 点击 ***demo-worker002*** 可查看该节点的详细信息,如下图所示: -![image-20190720225123111](./computing.assets/image-20190720225123111.png) +![Kubernetes教程:Kuboard节点详情页](./computing.assets/image-20190720225123111.png) @@ -37,7 +37,7 @@ description: 使用 Kuboard 管理 Kubernetes 计算节点 并确认要删除的节点的名称后,即可删除该节点 -![image-20190720225222622](./computing.assets/image-20190720225222622.png) +![Kubernetes教程:Kuboard移除节点](./computing.assets/image-20190720225222622.png) diff --git a/guide/cluster/namespace.md b/guide/cluster/namespace.md index d0d767b..aa8b905 100644 --- a/guide/cluster/namespace.md +++ b/guide/cluster/namespace.md @@ -18,7 +18,7 @@ description: 使用 Kuboard 管理 Kubernetes 名称空间。 假设您已经进入了 Kuboard 界面,如下图所示: -![image-20190723105606081](./namespace-create.assets/image-20190723105606081.png) +![Kubernetes教程:Kuboard界面](./namespace-create.assets/image-20190723105606081.png) @@ -32,24 +32,24 @@ description: 使用 Kuboard 管理 Kubernetes 名称空间。 | -------- | -------- | ---------------------------- | | 名称 | example | Kubernetes 的 namespace 名称 | -![image-20190723105644937](./namespace-create.assets/image-20190723105644937.png) +![Kubernetes教程:Kuboard创建名称空间](./namespace-create.assets/image-20190723105644937.png) * 点击 ***保存*** -![image-20190723105722999](./namespace-create.assets/image-20190723105722999.png) +![Kubernetes教程:Kuboard保存名称空间](./namespace-create.assets/image-20190723105722999.png) * 点击 ***应用*** -![image-20190723105748435](./namespace-create.assets/image-20190723105748435.png) +![Kubernetes教程:Kuboard保存名称空间-应用](./namespace-create.assets/image-20190723105748435.png) * 点击 ***完成*** 此时可在名称空间列表中查看到刚刚创建好的名称空间 *example* -![image-20190723105809872](./namespace-create.assets/image-20190723105809872.png) +![Kubernetes教程:Kuboard创建名称空间完成](./namespace-create.assets/image-20190723105809872.png) * 点击 *example* 名称空间 点击 *example* 名称空间后,可进入该名称空间的页面。刚刚初始化的名称空间的界面布局如下图所示: -![image-20190723105830318](./namespace-create.assets/image-20190723105830318.png) +![Kubernetes教程:Kuboard进入名称空间页](./namespace-create.assets/image-20190723105830318.png) diff --git a/guide/cluster/storage.md b/guide/cluster/storage.md index 8ec9c76..038faff 100644 --- a/guide/cluster/storage.md +++ b/guide/cluster/storage.md @@ -23,11 +23,11 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class 如下图所示 -![image-20190717113807552](./storage-create.assets/image-20190717113807552.png) +![Kubernetes教程:在阿里云创建NAS](./storage-create.assets/image-20190717113807552.png) * 在 ***文件存储 NAS*** 控制台中点击 ***创建文件系统*** -![image-20190717114304953](./storage-create.assets/image-20190717114304953.png) +![Kubernetes教程:在阿里云NAS创建文件系统](./storage-create.assets/image-20190717114304953.png) @@ -41,7 +41,7 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class | 可用区 | 请选择您的 Kubernetes 集群所在的可用区 | 文件系统所在可用区 | | 存储包 | 如果当下没有存储包,可以后续绑定 | 不绑定存储包,将无法使用该文件系统 | -![image-20190717114354610](./storage-create.assets/image-20190717114354610.png) +![Kubernetes教程:在阿里云创建NAS](./storage-create.assets/image-20190717114354610.png) @@ -49,7 +49,7 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class 点击确定后,可查看到该文件系统已创建成功 -![image-20190717115020848](./storage-create.assets/image-20190717115020848.png) +![Kubernetes教程:在阿里云创建NAS成功](./storage-create.assets/image-20190717115020848.png) * 绑定存储包 @@ -57,7 +57,7 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class * 点击刚创建文件系统的 ***管理*** 按钮 -![image-20190717115403374](./storage-create.assets/image-20190717115403374.png) +![Kubernetes教程:在阿里云为NAS绑定存储包](./storage-create.assets/image-20190717115403374.png) * 点击 ***添加挂载点*** @@ -70,13 +70,13 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class | 交换机 | 请选择您的 Kubernetes 集群所在的交换机 | | | 权限组 | VPC默认权限组(全部允许) | 请选择全部允许 | -![image-20190717115457614](./storage-create.assets/image-20190717115457614.png) +![Kubernetes教程:在阿里云为NAS添加挂载点](./storage-create.assets/image-20190717115457614.png) * 点击 ***确定*** 点击确定后,将完成挂载点创建,如下图所示: -![image-20190717115829821](./storage-create.assets/image-20190717115829821.png) +![Kubernetes教程:在阿里云完成NAS挂载点添加](./storage-create.assets/image-20190717115829821.png) ### 获取 NFS 连接参数 @@ -107,7 +107,7 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class 如下图所示: -![image-20190723112105018](./storage-create.assets/image-20190723112105018.png) +![Kubernetes教程:访问Kuboard集群概览页](./storage-create.assets/image-20190723112105018.png) * 点击 ***创建存储类*** @@ -121,19 +121,19 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class | 回收策略 | 回收后删除 | 当该存储类创建的 存储卷(Persistent Volume)被删除后,之前该存储卷中的文件可以被:回收后删除 / 回收后保留 | | 存储卷绑定模式 | 首次使用时绑定 | 即刻绑定:当 存储卷被创建时,就在 NFS 中为其分配空间,并绑定;
首次使用时绑定: 在存储卷被第一次使用到时,才绑定 | -![image-20190814111245506](./storage-create.assets/image-20190814111245506.png) +![Kubernetes教程:在Kuboard创建存储类](./storage-create.assets/image-20190814111245506.png) * 点击 ***保存*** -![image-20190723112204681](./storage-create.assets/image-20190723112204681.png) +![Kubernetes教程:在Kuboard保存存储类](./storage-create.assets/image-20190723112204681.png) * 点击 ***应用*** -![image-20190723113250521](./storage-create.assets/image-20190723113250521.png) +![Kubernetes教程:在Kuboard保存存储类](./storage-create.assets/image-20190723113250521.png) @@ -141,4 +141,4 @@ description: 使用 Kuboard 管理 Kubernetes 存储类 Storage Class 此时可在存储资源列表中查看到刚创建的存储类 -![image-20190723113312360](./storage-create.assets/image-20190723113312360.png) +![Kubernetes教程:在Kuboard查看已创建的存储类](./storage-create.assets/image-20190723113312360.png) diff --git a/guide/diagonize/events.md b/guide/diagonize/events.md index e6fc312..60ad2fb 100644 --- a/guide/diagonize/events.md +++ b/guide/diagonize/events.md @@ -14,7 +14,7 @@ Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间 如果存在与某一个工作负载相关的错误事件,名称空间界面中,将以红色显示该工作负载,如下图所示: -![image-20190721104153954](./events.assets/image-20190721104153954.png) +![Kubernetes教程:在Kuboard查看错误事件提示](./events.assets/image-20190721104153954.png) @@ -24,7 +24,7 @@ Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间 在任何页面点击界面左上角的 ***事件*** 按钮,进入事件列表页: -![image-20190721101812895](./events.assets/image-20190721101812895.png) +![Kubernetes教程:在Kuboard查看全局事件](./events.assets/image-20190721101812895.png) @@ -32,7 +32,7 @@ Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间 * 点击全局事件列表中的 ***类型*** 标签, -![image-20190721101954560](./events.assets/image-20190721101954560.png) +![Kubernetes教程:在Kuboard删除事件](./events.assets/image-20190721101954560.png) * 点击 ***确定*** @@ -46,4 +46,4 @@ Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间 容器组信息中包含了与该容器组相关的所有集群事件。 -![image-20190721103324863](./events.assets/image-20190721103324863.png) +![Kubernetes教程:Kuboard将事件与微服务关联](./events.assets/image-20190721103324863.png) diff --git a/guide/diagonize/logs.md b/guide/diagonize/logs.md index dac3232..cd7de91 100644 --- a/guide/diagonize/logs.md +++ b/guide/diagonize/logs.md @@ -12,13 +12,13 @@ description: 使用 Kuboard 打开并跟踪容器组的最新日志,以便对 假设您已经进入 ***工作负载*** 详情页,如下图所示: -![image-20190721104348908](./logs.assets/image-20190721104348908.png) +![Kubernetes教程:在Kuboard查看工作负载](./logs.assets/image-20190721104348908.png) * 点击容器信息中的 ***日志*** 按钮 可进入日志追踪界面,如下图所示: -![image-20190721104415732](./logs.assets/image-20190721104415732.png) +![Kubernetes教程:在Kuboard查看日志追踪](./logs.assets/image-20190721104415732.png) @@ -35,4 +35,4 @@ description: 使用 Kuboard 打开并跟踪容器组的最新日志,以便对 > * ping, curl 命令检查容器内与集群内其他服务,集群外服务的网络连通性 > * vi 命令,临时修改容器内应用程序的配置,并在容器内重启应用程序,以临时性的尝试修复问题,如果有效再将修改更新到应用程序代码或者 Dockerfile -![image-20190721104522870](./logs.assets/image-20190721104522870.png) +![Kubernetes教程:在Kuboard进入容器的终端界面](./logs.assets/image-20190721104522870.png) diff --git a/guide/example/busybox.md b/guide/example/busybox.md index 52baecd..e1438ff 100644 --- a/guide/example/busybox.md +++ b/guide/example/busybox.md @@ -13,7 +13,7 @@ description: 使用 Kuboard 向 Kubernetes 部署一个最简单的 Deployment 假设您已经进入了 Kuboard 名称空间界面,如下图所示。可参考 [创建名称空间](/guide/cluster/namespace.html#创建名称空间) -![image-20190723115721514](./pre-condition.assets/image-20190723115721514.png) +![Kubernetes教程:在Kuboard中进入名称空间页](./pre-condition.assets/image-20190723115721514.png) ## 部署 busybox @@ -39,19 +39,19 @@ Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如 -![image-20190723115852719](./busybox.assets/image-20190723115852719.png) +![Kubernetes教程:在 Kuboard 中创建 busybox](./busybox.assets/image-20190723115852719.png) * 完成表单填写后,点击 ***保存*** Kuboard 将对表单参数进行校验,通过后,方可执行对集群的变更操作。 -![image-20190723115912645](./busybox.assets/image-20190723115912645.png) +![Kubernetes教程:在 Kuboard 中保存 busybox](./busybox.assets/image-20190723115912645.png) * 点击 ***应用*** Kuboard 执行对集群的变更操作,变更的过程中,产生的事件以通知消息的形式显示出来。 -![image-20190723115940862](./busybox.assets/image-20190723115940862.png) +![Kubernetes教程:在 Kuboard 中保存 busybox](./busybox.assets/image-20190723115940862.png) @@ -81,7 +81,7 @@ Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如 * 容器组基本信息,及删除容器组的操作按钮。(此区域还包括容器组相关的监控操作,监控模块在后续的章节中介绍) * 容器基本信息,及查看容器日志、打开容器终端的按钮。(此区域还包括容器相关的监控操作,监控模块在后续的章节中介绍) -![image-20190723120011972](./busybox.assets/image-20190723120011972.png) +![Kubernetes教程:在 Kuboard 中查看已部署的 busybox](./busybox.assets/image-20190723120011972.png) @@ -89,7 +89,7 @@ Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如 此时打开了该容器的控制台,Kuboard 默认使用 /bin/bash 终端程序,而 busybox 镜像中并不包含 /bin/bash,因此您会看到一个如下图所示的错误提示: -![image-20190723120050894](./busybox.assets/image-20190723120050894.png) +![Kubernetes教程:在 Kuboard 中进入 busybox 的终端界面](./busybox.assets/image-20190723120050894.png) @@ -97,10 +97,10 @@ Busybox 是一个非常小巧(不到5M)的容器,此处用它来展示如 点击屏幕左上角的 ***切换到 /bin/sh*** -![image-20190723120104474](./busybox.assets/image-20190723120104474.png) +![Kubernetes教程:在 Kuboard 中进入 busybox 的终端界面](./busybox.assets/image-20190723120104474.png) * 输入 *export* 并回车 输入 *export* 并回车后,可查看该容器当前的环境变量。您也可以在终端中执行任何容器内部的命令。在您完成容器的部署之后,终端界面是非常有效的问题诊断工具之一。 -![image-20190723120125425](./busybox.assets/image-20190723120125425.png) +![Kubernetes教程:在 Kuboard 中进入 busybox 的终端界面执行命令](./busybox.assets/image-20190723120125425.png) diff --git a/guide/example/import.md b/guide/example/import.md index b1527f0..73f7c6b 100644 --- a/guide/example/import.md +++ b/guide/example/import.md @@ -21,7 +21,7 @@ example中用到了存储卷声明,请在 Kuboard 中 [创建存储类](/guide 假设您已经进入了 Kuboard 名称空间界面,如下图所示: -![image-20190723115721514](./pre-condition.assets/image-20190723115721514.png) +![Kubernetes教程:在Kuboard中进入名称空间页](./pre-condition.assets/image-20190723115721514.png) ## 导入 example @@ -35,31 +35,31 @@ example中用到了存储卷声明,请在 Kuboard 中 [创建存储类](/guide * 点击 ***导入工作负载*** 按钮 -![image-20190723120730196](./import.assets/image-20190723120730196.png) +![Kubernetes教程:在Kuboard中导入工作负载](./import.assets/image-20190723120730196.png) * 点击 ***上传文件*** 按钮 并选择刚才下载的 export_example.yaml 文件 -![image-20190723120753533](./import.assets/image-20190723120753533.png) +![Kubernetes教程:在Kuboard中导入工作负载-上传文件](./import.assets/image-20190723120753533.png) * 点击 ***下一步*** 默认选择所有的工作负载 -![image-20190723120832778](./import.assets/image-20190723120832778.png) +![Kubernetes教程:在Kuboard中导入工作负载-选择所有工作负载](./import.assets/image-20190723120832778.png) * 点击 ***下一步*** 默认选择所有要导入的配置,example中没有使用到配置信息 -![image-20190723120912377](./import.assets/image-20190723120912377.png) +![Kubernetes教程:在Kuboard中导入工作负载-选择要导入的配置](./import.assets/image-20190723120912377.png) * 点击 ***下一步*** 默认选择所有 Secrets -![image-20190723120926747](./import.assets/image-20190723120926747.png) +![Kubernetes教程:在Kuboard中导入工作负载-选择所有Secrets](./import.assets/image-20190723120926747.png) * 点击 ***下一步*** @@ -74,7 +74,7 @@ example中用到了存储卷声明,请在 Kuboard 中 [创建存储类](/guide | 总量 | 2Gi | 2Gi代表 2G空间 | -![image-20190723120956821](./import.assets/image-20190723120956821.png) +![Kubernetes教程:在Kuboard中导入工作负载-填写存储卷声明参数](./import.assets/image-20190723120956821.png) * 点击 ***下一步*** @@ -87,31 +87,31 @@ example中用到了存储卷声明,请在 Kuboard 中 [创建存储类](/guide -![image-20190723121019167](./import.assets/image-20190723121019167.png) +![Kubernetes教程:在Kuboard中导入工作负载-填写域名](./import.assets/image-20190723121019167.png) * 点击 ***下一步*** -![image-20190723121035917](./import.assets/image-20190723121035917.png) +![Kubernetes教程:在Kuboard中导入工作负载-核对信息](./import.assets/image-20190723121035917.png) * 点击 ***确定*** -![image-20190723121055648](./import.assets/image-20190723121055648.png) +![Kubernetes教程:在Kuboard中导入工作负载-确定](./import.assets/image-20190723121055648.png) * 点击 ***应用*** -![image-20190723121117514](./import.assets/image-20190723121117514.png) +![Kubernetes教程:在Kuboard中导入工作负载-应用](./import.assets/image-20190723121117514.png) * 点击 ***完成*** -![image-20190723121132991](./import.assets/image-20190723121132991.png) +![Kubernetes教程:在Kuboard中导入工作负载-导入完成](./import.assets/image-20190723121132991.png) * 点击 ***已完成*** 可再名称空间中查看到刚才导入的 example 的所有工作负载及存储卷声明 -![image-20190723121433809](./import.assets/image-20190723121433809.png) +![Kubernetes教程:在Kuboard中导入工作负载-查看导入结果](./import.assets/image-20190723121433809.png) @@ -121,13 +121,13 @@ example中用到了存储卷声明,请在 Kuboard 中 [创建存储类](/guide * 点击工作负载 ***web-example*** -![image-20190723121412027](./import.assets/image-20190723121412027.png) +![Kubernetes教程:在Kuboard中导入工作负载-查看导入的web-example](./import.assets/image-20190723121412027.png) * 点击 互联网入口中的域名 ***http://web-example.example.demo.kuboard.cn*** **Example 部署成功** -![image-20190717193548703](./import.assets/image-20190717193548703.png) +![Kubernetes教程:在Kuboard中导入工作负载-查看日志](./import.assets/image-20190717193548703.png) > web-example容器的日志中会出现如下异常,错误原因是,example使用了一个监控套件,该监控套件要求将容器注册到monitor-eureka中,当下我们并没有安装该监控套件。此错误并不影响 example 程序的使用。暂时忽略该异常。 > diff --git a/guide/example/monitor.md b/guide/example/monitor.md index 04ca7d7..d18ca4b 100644 --- a/guide/example/monitor.md +++ b/guide/example/monitor.md @@ -18,7 +18,7 @@ description: 使用 Kuboard 在 Kubernetes 上安装监控套件,并对 exampl 假设您已进入 example 名称空间,如下图所示: -![image-20190723121433809](./import.assets/image-20190723121433809.png) +![Kubernetes教程:在Kuboard中监控-进入名称空间](./import.assets/image-20190723121433809.png) @@ -34,41 +34,41 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * 将鼠标移到 ***设置*** 菜单 -![image-20190723150525017](./monitor.assets/image-20190723150525017.png) +![Kubernetes教程:在Kuboard中监控-进入监控套件安装页](./monitor.assets/image-20190723150525017.png) * 点击 ***监控套件 - example*** -![image-20190723150616633](./monitor.assets/image-20190723150616633.png) +![Kubernetes教程:在Kuboard中监控-进入监控套件安装页](./monitor.assets/image-20190723150616633.png) * 点击 ***全局监控套件 / 查找并安装*** -![image-20190723150853277](./monitor.assets/image-20190723150853277.png) +![Kubernetes教程:在Kuboard中监控-安装全局监控套件-查找](./monitor.assets/image-20190723150853277.png) * 点击 ***资源层监控套件 / 安装*** -![image-20190723151045112](./monitor.assets/image-20190723151045112.png) +![Kubernetes教程:在Kuboard中监控-安装全局监控套件-安装](./monitor.assets/image-20190723151045112.png) * 点击 ***全局监控套件 / 资源层监控套件 / 安装*** -![image-20190723151103353](./monitor.assets/image-20190723151103353.png) +![Kubernetes教程:在Kuboard中监控-安装全局监控套件-安装](./monitor.assets/image-20190723151103353.png) * 根据向导提示,完成工作负载的导入 -![image-20190723151339137](./monitor.assets/image-20190723151339137.png) +![Kubernetes教程:在Kuboard中监控-安装全局监控套件-导入对应的工作负载](./monitor.assets/image-20190723151339137.png) * 点击 ***资源层监控套件 / 初始化*** 由于下载镜像需要时间,您可能需要等待5-10分钟后,才能成功执行初始化。初始化成功的话,您将看到如下提示信息。 -![image-20190723151357262](./monitor.assets/image-20190723151357262.png) +![Kubernetes教程:在Kuboard中监控-安装全局监控套件-初始化](./monitor.assets/image-20190723151357262.png) ### 安装名称空间监控套件 * 点击 ***名称空间监控套件 example / 查找并安装*** -![image-20190723151422460](./monitor.assets/image-20190723151422460.png) +![Kubernetes教程:在Kuboard中监控-安装名称空间监控套件-查找](./monitor.assets/image-20190723151422460.png) * 重复前述过程,安装监控套件 @@ -80,7 +80,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne 安装完成后,界面如下图所示: -![image-20190723151711230](./monitor.assets/image-20190723151711230.png) +![Kubernetes教程:在Kuboard中监控-安装名称空间监控套件-安装](./monitor.assets/image-20190723151711230.png) ### 查看监控套件的工作负载 @@ -90,7 +90,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne > 全局监控套件安装在 kube-system 名称空间 -![image-20190723151804727](./monitor.assets/image-20190723151804727.png) +![Kubernetes教程:在Kuboard中监控-查看监控套件-全局](./monitor.assets/image-20190723151804727.png) ## 重启 example 容器组 @@ -112,7 +112,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne > * Kubernetes 在启动容器组时,根据 imagePullPolicy 的设置 Always,将会尝试从镜像仓库抓取最新镜像,这一特性,可以用于开发环境和测试环境的版本更新,因为您的 devops 系统肯能不会为 daily build 生成新的镜像标签; > * 此处删除容器组的目的是,重新启动容器,以便容器中的监控探针能够检测到其对应监控套件的存在。 -![image-20190723151845303](./monitor.assets/image-20190723151845303.png) +![Kubernetes教程:在Kuboard中监控-重启容器组](./monitor.assets/image-20190723151845303.png) * 在列表中选择 @@ -128,31 +128,31 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * web-example-xxxxxx-xxxx -![image-20190723151902003](./monitor.assets/image-20190723151902003.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-选中容器组](./monitor.assets/image-20190723151902003.png) * 点击 ***删除*** 按钮 -![image-20190723151914994](./monitor.assets/image-20190723151914994.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-删除容器组](./monitor.assets/image-20190723151914994.png) * 点击 ***确定*** -![image-20190723151932871](./monitor.assets/image-20190723151932871.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-确认删除容器组](./monitor.assets/image-20190723151932871.png) * 点击 ***应用*** -![image-20190723151951910](./monitor.assets/image-20190723151951910.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-执行](./monitor.assets/image-20190723151951910.png) * 等待,直到容器组调整完成 -![image-20190723152020605](./monitor.assets/image-20190723152020605.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-等待执行过程](./monitor.assets/image-20190723152020605.png) * 点击 ***后退*** -![image-20190723152040219](./monitor.assets/image-20190723152040219.png) +![Kubernetes教程:在Kuboard中监控-重启容器组-查看结果](./monitor.assets/image-20190723152040219.png) ## 查看监控信息 @@ -162,13 +162,13 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne 如果您在下图中没有看到 ***Nginx 监控***, ***容器组监控*** 等,请刷新您的页面,因为监控套件初始化之后需要刷新页面才能加载并显示。 -![image-20190723152124196](./monitor.assets/image-20190723152124196.png) +![Kubernetes教程:在Kuboard中监控-查看Nginx监控、容器组监控入口](./monitor.assets/image-20190723152124196.png) * 点击 ***所在节点监控*** 可查看所在节点的资源使用情况监控信息 -![image-20190718104156232](./monitor.assets/image-20190718104156232.png) +![Kubernetes教程:在Kuboard中监控-查看所在节点监控](./monitor.assets/image-20190718104156232.png) @@ -180,7 +180,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * 点击 Nginx 监控 -![image-20190718104729472](./monitor.assets/image-20190718104729472.png) +![Kubernetes教程:在Kuboard中监控-查看Nginx监控](./monitor.assets/image-20190718104729472.png) @@ -190,7 +190,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * 点击 ***持久层 / example db*** * 点击 ***MySQL 监控*** -![image-20190718105420599](./monitor.assets/image-20190718105420599.png) +![Kubernetes教程:在Kuboard中监控-查看MySQL监控](./monitor.assets/image-20190718105420599.png) @@ -200,7 +200,7 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * 点击 ***微服务层 / example*** * 点击 ***Java 虚拟机监控*** -![image-20190718105641651](./monitor.assets/image-20190718105641651.png) +![Kubernetes教程:在Kuboard中监控-查看Java虚拟机监控](./monitor.assets/image-20190718105641651.png) @@ -208,10 +208,10 @@ kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kuberne * 在 ***微服务层 / example*** 中点击 ***链路追踪*** -![image-20190718120957255](./monitor.assets/image-20190718120957255.png) +![Kubernetes教程:在Kuboard中监控-查看链路追踪信息](./monitor.assets/image-20190718120957255.png) -![image-20190718121133160](./monitor.assets/image-20190718121133160.png) +![Kubernetes教程:在Kuboard中监控-查看链路追踪信息-APM](./monitor.assets/image-20190718121133160.png) diff --git a/guide/namespace/adjustion.md b/guide/namespace/adjustion.md index 9fc1e2b..dbde771 100644 --- a/guide/namespace/adjustion.md +++ b/guide/namespace/adjustion.md @@ -16,7 +16,7 @@ description: 使用 Kuboard 对 Kubernetes 进行日常调整,包括:批量 假设您一进入 ***example*** 名称空间页面,如下图所示: -![image-20190720232405147](./adjustion.assets/image-20190720232405147.png) +![Kubernetes教程:在Kuboard中进行日常调整-进入名称空间页](./adjustion.assets/image-20190720232405147.png) @@ -42,23 +42,23 @@ description: 使用 Kuboard 对 Kubernetes 进行日常调整,包括:批量 如下图所示: -![image-20190720233322837](./adjustion.assets/image-20190720233322837.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量删除容器组](./adjustion.assets/image-20190720233322837.png) * 点击 ***删除*** 按钮 -![image-20190720233348284](./adjustion.assets/image-20190720233348284.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量删除容器组-选择](./adjustion.assets/image-20190720233348284.png) * 点击 ***确定*** -![image-20190720233412812](./adjustion.assets/image-20190720233412812.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量删除容器组-执行](./adjustion.assets/image-20190720233412812.png) * 点击 ***应用*** -![image-20190720233436465](./adjustion.assets/image-20190720233436465.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量删除容器组-执行](./adjustion.assets/image-20190720233436465.png) @@ -68,7 +68,7 @@ description: 使用 Kuboard 对 Kubernetes 进行日常调整,包括:批量 > Kuboard 会自动监听 kubernetes 执行此调整操作时的变化,您无需刷新页面,只要等待结果即可。 -![image-20190720233512996](./adjustion.assets/image-20190720233512996.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量删除容器组-完成](./adjustion.assets/image-20190720233512996.png) @@ -86,31 +86,31 @@ description: 使用 Kuboard 对 Kubernetes 进行日常调整,包括:批量 * 在名称空间页面点击 ***调整镜像版本*** -![image-20190721000526434](./adjustion.assets/image-20190721000526434.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整镜像版本](./adjustion.assets/image-20190721000526434.png) * 在要调整的镜像上点击 ***修改*** 并填写新的镜像版本号,如下图所示: -![image-20190721000759925](./adjustion.assets/image-20190721000759925.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整镜像版本-填写版本号](./adjustion.assets/image-20190721000759925.png) * 点击 ***执行变更*** -![image-20190721000822458](./adjustion.assets/image-20190721000822458.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整镜像版本-执行变更](./adjustion.assets/image-20190721000822458.png) * 点击 ***应用*** -![image-20190721000847954](./adjustion.assets/image-20190721000847954.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整镜像版本-应用](./adjustion.assets/image-20190721000847954.png) * 点击 ***完成*** 此时会进入容器组列表界面,请等待 Kubernetes 完成对容器组的调整(无需刷新页面) -![image-20190721000919933](./adjustion.assets/image-20190721000919933.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整镜像版本-完成](./adjustion.assets/image-20190721000919933.png) @@ -120,4 +120,4 @@ description: 使用 Kuboard 对 Kubernetes 进行日常调整,包括:批量 ***调整容器镜像版本*** 的功能界面中,也可以用来调整工作负载的副本数,如下图所示: -![image-20190721100715898](./adjustion.assets/image-20190721100715898.png) +![Kubernetes教程:在Kuboard中进行日常调整-批量调整工作负载数](./adjustion.assets/image-20190721100715898.png) diff --git a/guide/namespace/configMap.md b/guide/namespace/configMap.md index 2ef557d..d45b149 100644 --- a/guide/namespace/configMap.md +++ b/guide/namespace/configMap.md @@ -10,13 +10,13 @@ description: 使用 Kuboard 配置 Kubernetes ConfigMap 假设您已进入名称空间界面,如下图所示: -![image-20190721110355464](./secrets.assets/image-20190721110355464.png) +![Kubernetes教程:在Kuboard中修改ConfigMap-进入名称空间页](./secrets.assets/image-20190721110355464.png) 配置列表位于图中左侧中部,点击 ***放大*** 按钮,可以将列表显示到更大的区域,如下图所示: > 点击 **配置** 可以刷新该列表 -![image-20190721112353077](./configMap.assets/image-20190721112353077.png) +![Kubernetes教程:在Kuboard中修改ConfigMap-刷新ConfigMap列表](./configMap.assets/image-20190721112353077.png) @@ -34,18 +34,18 @@ description: 使用 Kuboard 配置 Kubernetes ConfigMap | 配置数据 - 名称 | EUREKA_URL | | | 配置数据 - 内容 | http://cloud-eureka:9200/eureka | | -![image-20190721112624128](./configMap.assets/image-20190721112624128.png) +![Kubernetes教程:在Kuboard中修改ConfigMap-创建](./configMap.assets/image-20190721112624128.png) * 点击 ***保存*** 配置信息创建成功 -![image-20190721113050608](./configMap.assets/image-20190721113050608.png) +![Kubernetes教程:在Kuboard中修改ConfigMap-保存创建](./configMap.assets/image-20190721113050608.png) # 查看/编辑/删除 配置 * 点击列表中的 ***my-config-map*** -![image-20190721113155991](./configMap.assets/image-20190721113155991.png) +![Kubernetes教程:在Kuboard中修改ConfigMap-编辑](./configMap.assets/image-20190721113155991.png) 编辑、删除操作可直接按照提示完成 diff --git a/guide/namespace/multi-env.md b/guide/namespace/multi-env.md index 0f7b3f8..44e8640 100644 --- a/guide/namespace/multi-env.md +++ b/guide/namespace/multi-env.md @@ -33,7 +33,7 @@ Kuboard 针对这种场景,提供了导出配置、导入配置的功能,以 假设您已完成微服务部署,并已进入 namespace 界面,如下图所示: -![image-20190721085144545](./multi-env.assets/image-20190721085144545.png) +![Kubernetes教程:在Kuboard中导出工作负载-进入名称空间](./multi-env.assets/image-20190721085144545.png) ### 操作步骤 @@ -42,27 +42,27 @@ Kuboard 针对这种场景,提供了导出配置、导入配置的功能,以 * 点击 ***刷新*** * 选择要导出的工作负载 -![image-20190721090118542](./multi-env.assets/image-20190721090118542.png) +![Kubernetes教程:在Kuboard中导出工作负载-选择要导出的工作负载](./multi-env.assets/image-20190721090118542.png) * 点击 ***下一步*** 选择要导出的配置(configMap)信息 -![image-20190721090753742](./multi-env.assets/image-20190721090753742.png) +![Kubernetes教程:在Kuboard中导出工作负载-选择要导出的ConfigMap](./multi-env.assets/image-20190721090753742.png) * 点击 ***下一步*** 选择要导出的 Secrets -![image-20190721090840925](./multi-env.assets/image-20190721090840925.png) +![Kubernetes教程:在Kuboard中导出工作负载-选择要导出的Secrets](./multi-env.assets/image-20190721090840925.png) * 点击 ***下一步*** -![image-20190721090935511](./multi-env.assets/image-20190721090935511.png) +![Kubernetes教程:在Kuboard中导出工作负载-下一步](./multi-env.assets/image-20190721090935511.png) * 点击 ***确定*** -![image-20190721091005130](./multi-env.assets/image-20190721091005130.png) +![Kubernetes教程:在Kuboard中导出工作负载-确认结果](./multi-env.assets/image-20190721091005130.png) * 查看已导出文件 diff --git a/guide/namespace/pvc.md b/guide/namespace/pvc.md index 112da67..7542432 100644 --- a/guide/namespace/pvc.md +++ b/guide/namespace/pvc.md @@ -12,13 +12,13 @@ description: 使用 Kuboard 配置 Kubernetes 的存储卷声明 Persistent Volu 假设您已进入名称空间界面,如下图所示: -![image-20190721110355464](./secrets.assets/image-20190721110355464.png) +![Kubernetes教程:在Kuboard中编辑存储卷声明-进入名称空间页](./secrets.assets/image-20190721110355464.png) 存储卷声明列表位于图中左下角,点击 ***放大*** 按钮,可以将列表显示到更大的区域,如下图所示: > 点击 **存储卷声明** 可以刷新该列表 -![image-20190721113708689](./pvc.assets/image-20190721113708689.png) +![Kubernetes教程:在Kuboard中编辑存储卷声明-刷新存储卷声明列表](./pvc.assets/image-20190721113708689.png) @@ -36,19 +36,19 @@ description: 使用 Kuboard 配置 Kubernetes 的存储卷声明 Persistent Volu | 读写模式 | 可被多节点读写 | | | 总量 | 2Gi | | -![image-20190721113810235](./pvc.assets/image-20190721113810235.png) +![Kubernetes教程:在Kuboard中编辑存储卷声明-创建存储卷声明](./pvc.assets/image-20190721113810235.png) * 点击 ***保存*** 存储卷声明创建成功 -![image-20190721114112644](./pvc.assets/image-20190721114112644.png) +![Kubernetes教程:在Kuboard中编辑存储卷声明-创建成功](./pvc.assets/image-20190721114112644.png) # 查看/编辑/删除 存储卷声明 * 点击 ***my-pvc*** -![image-20190721114211751](./pvc.assets/image-20190721114211751.png) +![Kubernetes教程:在Kuboard中编辑存储卷声明-编辑](./pvc.assets/image-20190721114211751.png) diff --git a/guide/namespace/secrets.md b/guide/namespace/secrets.md index 5d59403..b91df7e 100644 --- a/guide/namespace/secrets.md +++ b/guide/namespace/secrets.md @@ -10,13 +10,13 @@ description: 使用 Kuboard 配置 Kubernetes Secrets 假设您已进入名称空间界面,如下图所示: -![image-20190721110355464](./secrets.assets/image-20190721110355464.png) +![Kubernetes教程:在Kuboard中编辑Secrets-进入名称空间页](./secrets.assets/image-20190721110355464.png) Secrets 列表位于图中左上角,点击 ***放大*** 按钮,可以将列表显示到更大的区域,如下图所示: > 点击 **Secrets** 可以刷新该列表 -![image-20190721110543437](./secrets.assets/image-20190721110543437.png) +![Kubernetes教程:在Kuboard中编辑Secrets-刷新列表](./secrets.assets/image-20190721110543437.png) # 创建 Secrets @@ -32,7 +32,7 @@ Secrets 列表位于图中左上角,点击 ***放大*** 按钮,可以将列 | docker username | my-docker-user | | | docker password | mypassword | | -![image-20190721111011798](./secrets.assets/image-20190721111011798.png) +![Kubernetes教程:在Kuboard中编辑Secrets-创建](./secrets.assets/image-20190721111011798.png) >当前 Kuboard 支持如下类型 Secrets 的创建: > @@ -47,13 +47,13 @@ Secrets 列表位于图中左上角,点击 ***放大*** 按钮,可以将列 Secrets 创建成功,如下图所示: -![image-20190721111540512](./secrets.assets/image-20190721111540512.png) +![Kubernetes教程:在Kuboard中编辑Secrets-保存](./secrets.assets/image-20190721111540512.png) # 查看/编辑/删除 Secrets * 点击 my-docker-repository -![image-20190721111642221](./secrets.assets/image-20190721111642221.png) +![Kubernetes教程:在Kuboard中编辑Secrets-编辑](./secrets.assets/image-20190721111642221.png) diff --git a/guide/namespace/workload.md b/guide/namespace/workload.md index 613c47f..28d810e 100644 --- a/guide/namespace/workload.md +++ b/guide/namespace/workload.md @@ -22,7 +22,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 * 假设您已进入工作负载查看界面,如下图所示: -![image-20190722223454676](./workload.assets/image-20190722223454676.png) +![Kubernetes教程:在Kuboard中编辑工作负载-进入工作负载查看页](./workload.assets/image-20190722223454676.png) @@ -32,7 +32,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 副本数: 目标容器组数量 -![image-20190722223551308](./workload.assets/image-20190722223551308.png) +![Kubernetes教程:在Kuboard中编辑工作负载-伸缩](./workload.assets/image-20190722223551308.png) @@ -40,7 +40,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 等待,知道伸缩操作执行完毕。 -![image-20190722223605920](./workload.assets/image-20190722223605920.png) +![Kubernetes教程:在Kuboard中编辑工作负载-完成伸缩](./workload.assets/image-20190722223605920.png) @@ -54,7 +54,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 * Kuboard 的工作负载编辑器,默认将容器组的 imagePullPolicy 设置为 Alwarys,因此,每次在容器组启动的时候,Kubenetes 都会尝试从镜像仓库中抓取最新镜像; -![image-20190722231246540](./workload.assets/image-20190722231246540.png) +![Kubernetes教程:在Kuboard中编辑工作负载-删除容器组](./workload.assets/image-20190722231246540.png) @@ -82,7 +82,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 通过 Kubernetes 事件所指示出来的问题,通常是集群本身配置的问题,或者是创建工作负载时的参数填写问题,解决这样的问题需要的是 Kubernetes 集群相关的知识和背景,**通常运维人员可以独立解决此类问题**。 -![image-20190722224029397](./workload.assets/image-20190722224029397.png) +![Kubernetes教程:在Kuboard中编辑工作负载-查看事件](./workload.assets/image-20190722224029397.png) @@ -90,13 +90,13 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 如下图所示,假设您已进入工作负载查看界面: -![image-20190722225347491](./workload.assets/image-20190722225347491.png) +![Kubernetes教程:在Kuboard中编辑工作负载-查看日志](./workload.assets/image-20190722225347491.png) * 点击其中的 ***日志*** 按钮 可查看该容器的运行时日志,如下图所示: -![image-20190722225454029](./workload.assets/image-20190722225454029.png) +![Kubernetes教程:在Kuboard中编辑工作负载-查看日志](./workload.assets/image-20190722225454029.png) @@ -117,7 +117,7 @@ description: Kuboard on Kubernetes 工作负载编辑器,无需编写 YAML 文 可进入该容器的交互式命令界面 -![image-20190722230511430](./workload.assets/image-20190722230511430.png) +![Kubernetes教程:在Kuboard中编辑工作负载-进入终端](./workload.assets/image-20190722230511430.png) diff --git a/install/README.md b/install/README.md index c536c78..18b6eb0 100644 --- a/install/README.md +++ b/install/README.md @@ -10,4 +10,4 @@ **在线提问** -![Kuboard 兴趣群二维码](./../overview/README.assets/kuboard_qq.png) +![Kubernetes安装:QQ群在线答疑](./../overview/README.assets/kuboard_qq.png) diff --git a/install/faq/timeout.md b/install/faq/timeout.md index a1c42b0..d838994 100644 --- a/install/faq/timeout.md +++ b/install/faq/timeout.md @@ -10,7 +10,7 @@ description: Kuboard 相关常见问题的诊断及解决。 > Token校验失败:Error: timeout of 10000ms exceeded -![image-20190803165814924](./timeout.assets/image-20190803165814924.png) +![Kubernetes教程:Kuboard中常见问题,Token校验超时](./timeout.assets/image-20190803165814924.png) diff --git a/install/history-k8s/install-k8s-1.15.1.md b/install/history-k8s/install-k8s-1.15.1.md index bcbed69..0436d95 100644 --- a/install/history-k8s/install-k8s-1.15.1.md +++ b/install/history-k8s/install-k8s-1.15.1.md @@ -10,15 +10,15 @@ description: 使用 kubeadm 安装 Kubernetes v1.15.1 的集群,单Master节 * **众多网友验证,并在线提出修改意见** - ![image-20190806065321567](./install-k8s-1.15.1.assets/image-20190806065321567.png) + ![Kubernetes安装:网友意见](./install-k8s-1.15.1.assets/image-20190806065321567.png) * **持续不断地更新和完善**,[更新历史](https://github.com/eip-work/kuboard-press/commits/master/install/install-k8s.md) - ![image-20190806070341727](./install-k8s-1.15.1.assets/image-20190806070341727.png) + ![Kubernetes安装:更新历史](./install-k8s-1.15.1.assets/image-20190806070341727.png) * **在线答疑** QQ 群 - ![kuboard_qq.png](../../overview/README.assets/kuboard_qq.png) + ![Kubernetes安装:在线答疑QQ群](../../overview/README.assets/kuboard_qq.png) ## 配置要求 @@ -37,7 +37,7 @@ Kuboard 的 Live Demo 环境使用的是如下拓扑结构,本文档描述了 * Kubernetes v1.15.1 * Docker 18.09.7 -![image-20190805230643974](./install-k8s-1.15.1.assets/image-20190805230643974.png) +![Kubernetes安装:拓扑结构](./install-k8s-1.15.1.assets/image-20190805230643974.png) ::: tip **关于二进制安装** @@ -188,7 +188,7 @@ net.bridge.bridge-nf-call-iptables = 1 如下图所示 -![image-20190715085036593](./install-k8s-1.15.1.assets/image-20190715085036593.png ':size=600x445') +![Kubernetes安装:net](./install-k8s-1.15.1.assets/image-20190715085036593.png ':size=600x445') 执行命令以应用 @@ -227,7 +227,7 @@ vim /usr/lib/systemd/system/docker.service 如下图所示 -![屏幕快照 2019-07-15 09.01.21](./install-k8s-1.15.1.assets/image2019-07-15_09.01.21.png ':size=1000x326') +![Kubernetes安装:systemd](./install-k8s-1.15.1.assets/image2019-07-15_09.01.21.png ':size=1000x326') **设置 docker 镜像** @@ -308,7 +308,7 @@ kubeadm init --config=kubeadm-config.yaml --upload-certs 执行结果如下图所示: -![image-20190715101542756](./install-k8s-1.15.1.assets/image-20190715101542756.png ':size=800x388') +![Kubernetes安装:初始化APIServer](./install-k8s-1.15.1.assets/image-20190715101542756.png ':size=800x388') @@ -400,7 +400,7 @@ kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery kubectl get nodes ``` -![image-20190715193838012](./install-k8s-1.15.1.assets/image-20190715193838012.png) +![Kubernetes安装:检查初始化结果](./install-k8s-1.15.1.assets/image-20190715193838012.png) diff --git a/install/history-k8s/install-k8s-1.15.2.md b/install/history-k8s/install-k8s-1.15.2.md index 1283f30..18e1a85 100644 --- a/install/history-k8s/install-k8s-1.15.2.md +++ b/install/history-k8s/install-k8s-1.15.2.md @@ -10,17 +10,17 @@ description: Kubernetes 最新稳定版 v1.15.2 的快速安装文档。该文 * **众多网友验证,并在线提出修改意见** - ![image-20190806065321567](./install-k8s-1.15.2.assets/image-20190806065321567.png) + ![Kubernetes安装:网友意见](./install-k8s-1.15.2.assets/image-20190806065321567.png) * **持续不断地更新和完善** * 始终有最新的 Kubernetes 稳定版安装文档,当前版本 v1.15.2 * 当前已更新了 39 次 , [查看更新历史](https://github.com/eip-work/kuboard-press/commits/master/install/install-k8s.md) - ![image-20190806070341727](./install-k8s-1.15.2.assets/image-20190806070341727.png) + ![Kubernetes安装:更新历史](./install-k8s-1.15.2.assets/image-20190806070341727.png) * **在线答疑** QQ 群 - ![kuboard_qq.png](/overview/README.assets/kuboard_qq.png) + ![Kubernetes安装:QQ群在线答疑](/overview/README.assets/kuboard_qq.png) ## 配置要求 @@ -43,7 +43,7 @@ description: Kubernetes 最新稳定版 v1.15.2 的快速安装文档。该文 安装后的拓扑图如下:下载拓扑图源文件 使用Axure RP 9.0可打开该文件 -![image-20190826000521999](./install-k8s-1.15.2.assets/image-20190826000521999.png) +![Kubernetes安装:拓扑结构](./install-k8s-1.15.2.assets/image-20190826000521999.png) ::: tip **关于二进制安装** diff --git a/install/history-k8s/install-k8s-1.15.3.md b/install/history-k8s/install-k8s-1.15.3.md index a7b590e..7543efd 100644 --- a/install/history-k8s/install-k8s-1.15.3.md +++ b/install/history-k8s/install-k8s-1.15.3.md @@ -101,7 +101,7 @@ export default { 也可以扫描二维码加群

- + Kubernetes教程:QQ群答疑

diff --git a/install/history-k8s/install-k8s-1.15.4.md b/install/history-k8s/install-k8s-1.15.4.md index cceaff9..e99378b 100644 --- a/install/history-k8s/install-k8s-1.15.4.md +++ b/install/history-k8s/install-k8s-1.15.4.md @@ -101,7 +101,7 @@ export default { 也可以扫描二维码加群

- + Kubernetes教程:QQ群在线答疑

diff --git a/install/install-dashboard-upgrade.md b/install/install-dashboard-upgrade.md index 6f86c3a..2ae427f 100644 --- a/install/install-dashboard-upgrade.md +++ b/install/install-dashboard-upgrade.md @@ -36,7 +36,7 @@ description: 详细介绍如何将 Kuboard 升级到最新版本。 选择 kuboard-xxxxxxxxxx-xxxxx 容器组,如下图所示: -![image-20190729071443225](./install-dashboard-upgrade.assets/image-20190729071443225.png) +![Kubernetes安装:升级Kuboard-进入容器组列表](./install-dashboard-upgrade.assets/image-20190729071443225.png) * 点击 ***删除*** 按钮 @@ -52,7 +52,7 @@ description: 详细介绍如何将 Kuboard 升级到最新版本。 如下图所示 -![image-20190729071954323](./install-dashboard-upgrade.assets/image-20190729071954323.png) +![Kubernetes安装:升级Kuboard-删除容器组](./install-dashboard-upgrade.assets/image-20190729071954323.png) ## 指定版本升级 @@ -64,7 +64,7 @@ description: 详细介绍如何将 Kuboard 升级到最新版本。 并修改 Deployment / Kuboard 的镜像版本为您要升级到的目标版本,如下图所示 -![image-20190728220831126](./install-dashboard-upgrade.assets/image-20190728220831126.png) +![Kubernetes安装:升级Kuboard-指定Kuboard版本](./install-dashboard-upgrade.assets/image-20190728220831126.png) * 点击 ***执行变更*** @@ -80,4 +80,4 @@ description: 详细介绍如何将 Kuboard 升级到最新版本。 如下图所示 -![image-20190729071954323](./install-dashboard-upgrade.assets/image-20190729071954323.png) +![Kubernetes安装:升级Kuboard-查看升级结果](./install-dashboard-upgrade.assets/image-20190729071954323.png) diff --git a/install/install-dashboard.md b/install/install-dashboard.md index 76dfd57..66f9710 100644 --- a/install/install-dashboard.md +++ b/install/install-dashboard.md @@ -219,7 +219,7 @@ kubectl port-forward service/kuboard 8080:80 -n kube-system * 如果仍然不能解决,请到 QQ 群提问 - ![qq](../overview/README.assets/kuboard_qq.png) + ![Kubernetes安装:QQ群在线答疑](../overview/README.assets/kuboard_qq.png) ::: **下一步** diff --git a/install/install-docker-desktop.md b/install/install-docker-desktop.md index d518966..b8f089c 100644 --- a/install/install-docker-desktop.md +++ b/install/install-docker-desktop.md @@ -25,7 +25,7 @@ description: 本文介绍了如何在 Windows/Mac 电脑安装 Kubernetes 测试 * **打开 docker-desktop 的 preference 面板**

- + Kubernetes教程:DockerDesktop/>
   </p>
 
 * **切换到 Kubernetes 标签页**
@@ -33,7 +33,7 @@ description: 本文介绍了如何在 Windows/Mac 电脑安装 Kubernetes 测试
   并勾选启动 **Enable Kubernetes**,点击 **Apply**
 
   <p>
-    <img src= + Kubernetes教程:DockerDesktop

::: diff --git a/install/install-k8s.md b/install/install-k8s.md index 7cff915..27dbea4 100644 --- a/install/install-k8s.md +++ b/install/install-k8s.md @@ -101,7 +101,7 @@ export default { 也可以扫描二维码加群

- + Kubernetes教程:QQ群在线答疑

***选择节点*** 按钮,选择对应 nodeName 的取值。如下图所示: -![image-20190908141039251](./assign-pod-node.assets/image-20190908141039251.png) +![Kubernetes教程:将容器调度到指定节点-选择节点](./assign-pod-node.assets/image-20190908141039251.png) ## 节点选择器 nodeSelector @@ -51,7 +51,7 @@ nodeSelector 是 PodSpec 中的一个字段。指定了一组名值对。节点 增加标签 disk:ssd,并保存,如下图所示: - ![image-20190908152121423](./assign-pod-node.assets/image-20190908152121423.png) + ![Kubernetes教程:将容器调度到指定节点-为节点增加标签](./assign-pod-node.assets/image-20190908152121423.png) ### 为工作负载选择节点 @@ -65,7 +65,7 @@ nodeSelector 是 PodSpec 中的一个字段。指定了一组名值对。节点 选择 disk:ssd 标签,此时可以看到匹配的节点有刚才您添加标签的节点。点击 ***确定*** 按钮 - ![image-20190908152640876](./assign-pod-node.assets/image-20190908152640876.png) + ![Kubernetes教程:将容器调度到指定节点-选择标签](./assign-pod-node.assets/image-20190908152640876.png) * 点击 ***保存*** 按钮 diff --git a/learning/k8s-intermediate/config/computing-resource.md b/learning/k8s-intermediate/config/computing-resource.md index ade78ff..23f43f6 100644 --- a/learning/k8s-intermediate/config/computing-resource.md +++ b/learning/k8s-intermediate/config/computing-resource.md @@ -38,7 +38,7 @@ Kubernetes 中,可以为容器指定计算资源的请求数量 request 和限 在 Kuboard 的工作负载编辑器中编辑容器资源请求及限制的界面如下图所示: -![image-20190908193257183](./computing-resource.assets/image-20190908193257183.png) +![Kubernetes教程:管理容器的计算资源](./computing-resource.assets/image-20190908193257183.png) ## 带有资源请求的容器组是如何调度的 diff --git a/learning/k8s-intermediate/config/config-map.md b/learning/k8s-intermediate/config/config-map.md index d5e75ee..dbf3ca3 100644 --- a/learning/k8s-intermediate/config/config-map.md +++ b/learning/k8s-intermediate/config/config-map.md @@ -26,13 +26,13 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 如下图所示: - ![image-20190829060842558](./config-map.assets/image-20190829060842558.png) + ![Kubernetes教程:使用ConfigMap配置应用-进入名称空间](./config-map.assets/image-20190829060842558.png) * 点击 **配置** --> **创建** 按钮 并填写表单,如下图所示: - ![image-20190829110253001](./config-map.assets/image-20190829110253001.png) + ![Kubernetes教程:使用ConfigMap配置应用-创建ConfigMap](./config-map.assets/image-20190829110253001.png) * 点击 **保存** @@ -59,9 +59,9 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 如下图所示: - ![image-20190829112358038](./config-map.assets/image-20190829112358038.png) + ![Kubernetes教程:使用ConfigMap配置应用-创建工作负载](./config-map.assets/image-20190829112358038.png) - ![image-20190829112451057](./config-map.assets/image-20190829112451057.png) + ![Kubernetes教程:使用ConfigMap配置应用-创建工作负载](./config-map.assets/image-20190829112451057.png) * 点击 **保存** @@ -81,7 +81,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 可查看到 ENV_KEY_1='value-1' 已经注入到该容器的环境变量中,如下图所示: - ![image-20190829112834708](./config-map.assets/image-20190829112834708.png) + ![Kubernetes教程:使用ConfigMap配置应用-进入终端界面](./config-map.assets/image-20190829112834708.png) ## ConfigMap --> 容器的环境变量(ConfigMap的所有名值对) @@ -104,7 +104,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 如下图所示: - ![image-20190829135425998](./config-map.assets/image-20190829135425998.png) + ![Kubernetes教程:使用ConfigMap配置应用-创建工作负载](./config-map.assets/image-20190829135425998.png) * 点击 **保存** @@ -133,7 +133,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 可查看到 `KEY_1` `KEY_2` `KEY_3` 已经注入到该容器的环境变量中,如下图所示: - ![image-20190829135734710](./config-map.assets/image-20190829135734710.png) + ![Kubernetes教程:使用ConfigMap配置应用-执行export命令](./config-map.assets/image-20190829135734710.png) ## ConfigMap --> Command 参数 @@ -155,7 +155,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 | 环境变量 | ENV_KEY_1 / ENV_KEY_3 | 选择 ConfigMap
ConfigMap 填写 ***my-nginx-config***
Key 填写 ***KEY_1***

同样的方法添加 ENV_KEY_3 | 如下图所示: - ![image-20190829141424670](./config-map.assets/image-20190829141424670.png) + ![Kubernetes教程:使用ConfigMap配置应用-Command参数](./config-map.assets/image-20190829141424670.png) * 点击 **保存** @@ -172,7 +172,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 如下图所示 - ![image-20190829151912714](./config-map.assets/image-20190829151912714.png) + ![Kubernetes教程:使用ConfigMap配置应用-查看日志界面](./config-map.assets/image-20190829151912714.png) ## ConfigMap --> 数据卷 @@ -207,7 +207,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 - ![image-20190829144149253](./config-map.assets/image-20190829144149253.png) + ![Kubernetes教程:使用ConfigMap配置应用-数据卷配置](./config-map.assets/image-20190829144149253.png) * 创建 nginx Deployment 如下图所示: @@ -233,7 +233,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 | 挂载点:数据卷 | default-conf | 选择上面已经定义的数据卷 | | 挂载点:数据卷内子路径 | default.conf | 将数据卷内的 default.conf 映射到容器的 /etc/nginx/conf.d/default.conf | - ![image-20190829143229693](./config-map.assets/image-20190829143229693.png) + ![Kubernetes教程:使用ConfigMap配置应用-数据卷配置](./config-map.assets/image-20190829143229693.png) * 点击 **保存** @@ -254,7 +254,7 @@ Kubernetes 官网描述了多种 ConfigMap 的创建方法,本文不再复述 cat /default.conf ``` - ![image-20190829151744331](./config-map.assets/image-20190829151744331.png) + ![Kubernetes教程:使用ConfigMap配置应用-查看结果](./config-map.assets/image-20190829151744331.png) ::: tip diff --git a/learning/k8s-intermediate/persistent/pv.md b/learning/k8s-intermediate/persistent/pv.md index fc22599..dcc6dc2 100644 --- a/learning/k8s-intermediate/persistent/pv.md +++ b/learning/k8s-intermediate/persistent/pv.md @@ -38,7 +38,7 @@ PersistentVolumeClaim(PVC 存储卷声明)代表用户使用存储的请求 * PersistentVolumeClaim 是使用该资源的请求,通常由应用程序提出请求,并指定对应的 StorageClass 和需求的空间大小 * PersistentVolumeClaim 可以做为数据卷的一种,被挂载到容器组/容器中使用 - +Kubernetes教程:存储卷PersistentVolume PersistantVolume 和 PersistantVolumeClaim 的管理过程描述如下: @@ -136,7 +136,7 @@ Kubernetes 支持 20 种存储卷类型(可参考 [Types of Persistent Volumes 在 Kuboard 中查看 PersistentVolume 的界面如下图所示: -![image-20190905221422172](./pv.assets/image-20190905221422172.png) +![Kubernetes教程:存储卷PersistentVolume-在Kuboard中查看](./pv.assets/image-20190905221422172.png) PersistentVolume 字段描述如下表所示: @@ -156,7 +156,7 @@ PersistentVolume 字段描述如下表所示: 在 Kuboard 中查看存储卷声明的界面如下图所示: -![image-20190906070246134](./pv.assets/image-20190906070246134.png) +![Kubernetes教程:存储卷PersistentVolume-在Kuboard中查看存储卷声明PersistentVolumeClaims](./pv.assets/image-20190906070246134.png) | 字段名称 | 可选项/备注 | | --------------------- | ------------------------------------------------------------ | @@ -171,4 +171,4 @@ PersistentVolume 字段描述如下表所示: 在您完成存储卷声明的定义后,您可以在 Kuboard 工作复杂编辑器的 ***数据卷 Volume*** 区域引用该存储卷声明,如下图所示: -![image-20190906072544024](./pv.assets/image-20190906072544024.png) +![Kubernetes教程:存储卷PersistentVolume-使用存储卷声明](./pv.assets/image-20190906072544024.png) diff --git a/learning/k8s-intermediate/persistent/storage-class.md b/learning/k8s-intermediate/persistent/storage-class.md index 6fa0532..084c1d4 100644 --- a/learning/k8s-intermediate/persistent/storage-class.md +++ b/learning/k8s-intermediate/persistent/storage-class.md @@ -28,7 +28,7 @@ Kuboard 支持的存储类的种类如下: 在 Kuboard 中查看存储类,如下图所示: -![image-20190906080746368](./storage-class.assets/image-20190906080746368.png) +![Kubernetes教程:在Kuboard中查看存储类](./storage-class.assets/image-20190906080746368.png) diff --git a/learning/k8s-intermediate/persistent/volume.md b/learning/k8s-intermediate/persistent/volume.md index d86415f..da31bfe 100644 --- a/learning/k8s-intermediate/persistent/volume.md +++ b/learning/k8s-intermediate/persistent/volume.md @@ -27,7 +27,7 @@ Docker 里同样也存在一个 volume(数据卷)的概念,但是 docker * 一个容器通过挂载点决定某一个数据卷被挂载到容器中的什么路径 * 不同类型的数据卷对应不同的存储介质(图中列出了 nfs、PVC、ConfigMap 三种存储介质,接下来将介绍更多) - +Kubernetes教程:数据卷 ## 在 Kuboard 中使用数据卷 @@ -54,7 +54,7 @@ Docker 里同样也存在一个 volume(数据卷)的概念,但是 docker ::: -![image-20190904194501941](./volume.assets/image-20190904194501941.png) +![Kubernetes教程:数据卷Volume-概念结构](./volume.assets/image-20190904194501941.png) ## 数据卷的类型 diff --git a/learning/k8s-intermediate/private-registry.md b/learning/k8s-intermediate/private-registry.md index 947cbcc..23b5a14 100644 --- a/learning/k8s-intermediate/private-registry.md +++ b/learning/k8s-intermediate/private-registry.md @@ -62,7 +62,7 @@ docker pull my-registry.example.com:5000/example/web-example:v1.0.1 如下图所示 - ![image-20190902223052044](./private-registry.assets/image-20190902223052044.png) + ![Kubernetes教程:使用私有仓库中的 docker 镜像](./private-registry.assets/image-20190902223052044.png) * 点击 **保存** 按钮 @@ -88,7 +88,7 @@ docker pull my-registry.example.com:5000/example/web-example:v1.0.1 * 红色部分:image 名字 * 棕色部分:image 标签 -![image-20190902223708740](./private-registry.assets/image-20190902223708740.png) +![Kubernetes教程:使用私有仓库中的 docker 镜像](./private-registry.assets/image-20190902223708740.png) diff --git a/learning/k8s-intermediate/service/cni.md b/learning/k8s-intermediate/service/cni.md index 5c05b4a..606983b 100644 --- a/learning/k8s-intermediate/service/cni.md +++ b/learning/k8s-intermediate/service/cni.md @@ -68,7 +68,7 @@ CNI的初衷是创建一个框架,用于在配置或销毁容器时动态配 **Flannel** -![kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/04c2db500e1b4b5dae3be817bfe6d673.jpeg) +![Kubernetes教程:kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/04c2db500e1b4b5dae3be817bfe6d673.jpeg) @@ -88,7 +88,7 @@ Flannel有几种不同类型的后端可用于封装和路由。默认和推荐 **Calico** -![kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/79fa00ed4bcb4d9b94aee1d02b3c5c8c.jpeg) +![Kubernetes教程:kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/79fa00ed4bcb4d9b94aee1d02b3c5c8c.jpeg) @@ -109,7 +109,7 @@ Calico是Kubernetes生态系统中另一种流行的网络选择。虽然Flannel **Weave** -![kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/67b4097c58df478cb348ad50ea752f12.jpeg) +![Kubernetes教程:kubernetes网络插件对比分析(flannel、calico、weave)](./cni.assets/67b4097c58df478cb348ad50ea752f12.jpeg) diff --git a/learning/k8s-intermediate/service/dns.md b/learning/k8s-intermediate/service/dns.md index 2bf244a..d00cc52 100644 --- a/learning/k8s-intermediate/service/dns.md +++ b/learning/k8s-intermediate/service/dns.md @@ -1,8 +1,121 @@ --- layout: LearningLayout -description: 本文介绍了 Kubernetes 中 DNS 的分配规则 +description: 本文介绍了 Kubernetes 中 Service 和 Pod 的 DNS 分配规则 --- # Service/Pod 的 DNS -正在撰写... +参考文档: Kubernetes 官网文档 [DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/) + +本文介绍了 Kubernetes 中的 DNS 分配方式 + +## 概述 + +Kubernetes 集群中运行了一组 DNS Pod,配置了对应的 Service,并由 kubelete 将 DNS Service 的 IP 地址配置到节点上的容器中以便解析 DNS names。 + +集群中的每一个 Service(包括 DNS 服务本身)都将被分配一个 DNS name。默认情况下,客户端 Pod 的 DNS 搜索列表包括 Pod 所在的名称空间以及集群的默认域。例如: + +假设名称空间 `bar` 中有一个 Service 名为 `foo`: +* 名称空间 `bar` 中的 Pod 可以通过 `nslookup foo` 查找到该 Service +* 名称空间 `quux` 中的 Pod 可以通过 `nslookup foo.bar` 查找到该 Service + +本文后面的章节详细介绍了支持的 DNS 记录类型及格式。如果有任何其他类型的格式凑巧可以使用,这仅仅是实现上的细节,并且可能在将来的版本中失效。参考此文档可以查看最新的规范 [Kubernetes DNS-Based Service Discovery](https://github.com/kubernetes/dns/blob/master/docs/specification.md) + +## Services + +### A 记录 + +* Service(headless Service 除外)将被分配一个 DNS A 记录,格式为 `my-svc.my-namespace.svc.cluster-domain.example`。该 DNS 记录解析到 Service 的 ClusterIP。 + +* Headless Service(没有 ClusterIP)也将被分配一个 DNS A 记录,格式为 `my-svc.my-namespace.svc.cluster-domain.exmaple`。该 DNS 记录解析到 Service 所选中的一组 Pod 的 IP 地址的集合。调用者应该使用该 IP 地址集合,或者按照轮询(round-robin)的方式从集合中选择一个 IP 地址使用。 + +### SRV 记录 + +Service(含 headless Service)的命名端口(有 name 的端口)将被分配一个 SRV 记录,其格式为 `_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster-domain.example`: +* 对于一个普通 Service(非 headless Service),该 SRV 记录解析到其端口号和域名 `my-svc.my-namespace.svc.cluster-domain.exmaple` +* 对于一个 Headless Service,该 SRV 记录解析到多个结果:每一个结果都对应该 Service 的一个后端 Pod,包含其端口号和 Pod 的域名 `auto-generated-pod-name.my-svc.my-namespace.svc.cluster-domain.exmaple` + +## Pods + +### Pod 的 hostname / subdomain + +Kubernetes 在创建 Pod 时,将 Pod 定义中的 `metadata.name` 的值作为 Pod 实例的 hostname。 + +Pod 定义中有一个可选字段 `spec.hostname` 可用来直接指定 Pod 的 hostname。例如,某 Pod 的 `spec.hostname` 字段被设置为 `my-host`,则该 Pod 创建后 hostname 将被设为 `my-host` + +Pod 定义中还有一个可选字段 `spec.subdomain` 可用来指定 Pod 的 subdomain。例如,名称空间 `my-namespace` 中,某 Pod 的 hostname 为 `foo`,并且 subdomain 为 `bar`,则该 Pod 的完整域名(FQDN)为 `foo.bar.my-namespace.svc.cluster-domain.example`。 + +例子: + +``` yaml +apiVersion: v1 +kind: Service +metadata: + name: default-subdomain +spec: + selector: + name: busybox + clusterIP: None + ports: + - name: foo # Actually, no port is needed. + port: 1234 + targetPort: 1234 +--- +apiVersion: v1 +kind: Pod +metadata: + name: busybox1 + labels: + name: busybox +spec: + hostname: busybox-1 + subdomain: default-subdomain + containers: + - image: busybox:1.28 + command: + - sleep + - "3600" + name: busybox +--- +apiVersion: v1 +kind: Pod +metadata: + name: busybox2 + labels: + name: busybox +spec: + hostname: busybox-2 + subdomain: default-subdomain + containers: + - image: busybox:1.28 + command: + - sleep + - "3600" + name: busybox +``` + +如果 Pod 所在名称空间中存在一个 headless Service,其名称与 Pod 的 subdomain 相同,则集群的 KubeDNS 服务器仍将为 Pod 的完整域名(FQDN)返回一个 A 记录。例如,假设一个 Pod 的 hostname 为 `busybox-1` 且其 subdomain 为 `default-subdomain`,同名称空间下有一个 headless Service 的名字为 `default-subdomain`,此时,该 Pod 的完整域名(FQDN)为 `busybox-1.default-subdomain.my-namespace.svc.cluster-domain.example`。DNS 服务将其解析到一个 A 记录,指向 Pod 的 IP 地址。上面 yaml 文件中的 Pod `busybox1` 和 `busybox2` 都将有各自的 A 记录 + +::: tip 备注 +* A 记录不是根据 Pod name 创建的,而是根据 hostname 创建的。如果一个 Pod 没有 hostname 只有 subdomain,则 Kubernetes 将只为其 headless Service 创建一个 A 记录 `default-subdomain.my-namespace.svc.cluster-domain.example`,该记录指向 Pod 的 IP 地址。 +* Pod 必须达到就绪状态才可以拥有 A 记录,除非 Service 的字段 `spec.publishNotReadyAddresses` 被设置为 `True` +::: + + + +### Pod 的 DNS Policy + +可以为每一个 Pod 设置其自己的 DNS Policy。Kubernetes 通过 Pod 定义中的 `spec.dnsPolicy` 字段设置 DNS Policy,可选的值有: + +* **Default**: Pod 从其所在的节点继承域名解析配置。更多细节请参考 [Customizing DNS Service +](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#inheriting-dns-from-the-node) + +* **ClusterFirst**:任何与集群域名后缀(例如 `www.kubernetes.io`)不匹配的 DNS 查询,都将被转发到 Pod 所在节点的上游 DNS 服务。集群管理员可能配置了额外的 stub-domain 及上游 DNS 服务,更多细节请参考 [Customizing DNS Service +](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#effects-on-pods) + +* **ClusterFirstWithHostNet**: 对于运行在节点网络上的 Pod,其 dnsPolicy 必须指定为 `ClusterFirstWithHostNet` + +* + +“ClusterFirstWithHostNet“: For Pods running with hostNetwork, you should explicitly set its DNS policy “ClusterFirstWithHostNet”. +“None“: It allows a Pod to ignore DNS settings from the Kubernetes environment. All DNS settings are supposed to be provided using the dnsConfig field in the Pod Spec. See Pod’s DNS config subsection below. diff --git a/learning/k8s-intermediate/service/ingress.md b/learning/k8s-intermediate/service/ingress.md index ebeb82f..1a34186 100644 --- a/learning/k8s-intermediate/service/ingress.md +++ b/learning/k8s-intermediate/service/ingress.md @@ -28,7 +28,7 @@ Ingress Controller (通常需要负载均衡器配合)负责实现 Ingress A 2. Ingress Controller 根据请求的域名 `a.kuboard.cn` 和路径 `abc` 匹配集群中所有的 Ingress 信息,并最终找到 `Ingress B` 中有这个配置,其对应的 Service 为 `Service B` 的 `9080` 端口 3. Ingress Controller 通过 kube-proxy 将请求转发到 `Service B` 对应的任意一个 Pod 上 与 `Service B` 的 `9080` 端口对应的容器端口上。(从 Ingress Controller 到 Pod 的负载均衡由 kube-proxy + Service 实现) - +Kubernetes教程:Ingress及其Controller ## Ingress Controller @@ -100,7 +100,7 @@ spec: > 文档 [安装 Kubernetes 单Master节点](/install/install-k8s.html) 中使用的就是这种拓扑结构。这种方式下,Ingress Controller 存在单点故障的可能性。 -![单IngressController节点](/images/topology/k8s.png) +![Kubernetes教程:单IngressController节点](/images/topology/k8s.png) ### 使用外部负载均衡器 @@ -112,7 +112,7 @@ spec: > 文档 [安装 Kubernetes 高可用](/install/install-kubernetes.html) 中使用的就是这种拓扑结构。 -![LoadBalancer](/images/topology/kubernetes.png) +![Kubernetes教程:LoadBalancer](/images/topology/kubernetes.png) ## 实战:通过 Ingress 使您的应用程序在互联网可用 @@ -249,7 +249,7 @@ curl a.demo.kuboard.cn * **如下图所示:** -![image-20190910225225179](./ingress.assets/image-20190910225225179.png) +![Kubernetes教程:创建工作负载并配置Ingress](./ingress.assets/image-20190910225225179.png) ::: tip Kuboard 工作负载编辑器将 kubernetes 中三个主要对象 Deployment/Service/Ingress 放在同一个编辑器界面中处理。 diff --git a/learning/k8s-intermediate/service/service-details.md b/learning/k8s-intermediate/service/service-details.md index 0894857..b0ad5fb 100644 --- a/learning/k8s-intermediate/service/service-details.md +++ b/learning/k8s-intermediate/service/service-details.md @@ -126,7 +126,7 @@ Kubernetes 支持三种 proxy mode(代理模式),他们的版本兼容性 如下图所示:

- + Kubernetes教程:Service user space

### Iptables 代理模式 @@ -141,7 +141,7 @@ Kubernetes 支持三种 proxy mode(代理模式),他们的版本兼容性 如下图所示:

- + Kubernetes教程:Service iptables proxy

**iptables proxy mode 的优点:** @@ -165,7 +165,7 @@ Kubernetes 支持三种 proxy mode(代理模式),他们的版本兼容性 * 当访问一个 Service 时,IPVS 将请求重定向到后端 Pod

- + Kubernetes教程:Service IPVS proxy

**IPVS 模式的优点** diff --git a/learning/k8s-intermediate/service/service.md b/learning/k8s-intermediate/service/service.md index b322187..969f5d7 100644 --- a/learning/k8s-intermediate/service/service.md +++ b/learning/k8s-intermediate/service/service.md @@ -35,7 +35,7 @@ Kubernetes 通过引入 Service 的概念,将前端与后端解耦。 从 Kuboard 工作负载编辑器的视角来看,Service 与其他重要的 Kubernetes 对象之间的关系如下图所示:

- + Kubernetes教程:Service概念结构

图中,Service 先连线到 Controller,Controller 在连线到容器组,这种表示方式只是概念上的,期望用户在使用 Kubernetes 的时候总是通过 Controller 创建 Pod,然后再通过 Service 暴露为网络服务,通过 Ingress 对集群外提供互联网访问。 @@ -52,6 +52,6 @@ Kubernetes 通过引入 Service 的概念,将前端与后端解耦。 在 Kuboard 工作负载编辑器中,Service 如下图所示: -![image-20190917213132221](./service.assets/image-20190917213132221.png) +![Kubernetes教程:Service概述](./service.assets/image-20190917213132221.png) ... -![image-20190917213206652](./service.assets/image-20190917213206652.png) +![Kubernetes教程:Service概述](./service.assets/image-20190917213206652.png) diff --git a/learning/k8s-intermediate/workload/init-container.md b/learning/k8s-intermediate/workload/init-container.md index cb3b56a..fb96e79 100644 --- a/learning/k8s-intermediate/workload/init-container.md +++ b/learning/k8s-intermediate/workload/init-container.md @@ -58,7 +58,7 @@ Pod 可以包含多个工作容器,也可以包含一个或多个初始化容 Kuboard 工作负载编辑器中支持定义初始化容器,如下图所示,左下角可 ***添加初始化容器*** 初始化容器按照添加的顺序显示在容器组中,且始终显示在工作容器的前面。 -![image-20190907171451988](./init-container.assets/image-20190907171451988.png) +![Kubernetes教程:在Kuboard中使用初始化容器](./init-container.assets/image-20190907171451988.png) ## 初始化容器的行为 diff --git a/learning/k8s-intermediate/workload/pod-lifecycle.md b/learning/k8s-intermediate/workload/pod-lifecycle.md index 28ef664..f223151 100644 --- a/learning/k8s-intermediate/workload/pod-lifecycle.md +++ b/learning/k8s-intermediate/workload/pod-lifecycle.md @@ -27,7 +27,7 @@ phase 的可能取值有: 每一个 Pod 都有一个数组描述其是否达到某些指定的条件。Pod condition 数组在 Kuboard 中的显示如下图所示: -![image-20190907122721669](./pod-lifecycle.assets/image-20190907122721669.png) +![Kubernetes教程:容器组的生命周期](./pod-lifecycle.assets/image-20190907122721669.png) 该数组的每一行可能有六个字段: @@ -79,7 +79,7 @@ Kubelet 可以在两种情况下对运行中的容器执行 Probe: Kuboard 可以在工作负载编辑器中配置健康检查/就绪检查,界面如下所示: -![image-20190907141952059](./pod-lifecycle.assets/image-20190907141952059.png) +![Kubernetes教程:在Kuboard中配置容器的健康检查/就绪检查](./pod-lifecycle.assets/image-20190907141952059.png) diff --git a/learning/k8s-intermediate/workload/pod.md b/learning/k8s-intermediate/workload/pod.md index d5bc8b5..0aef169 100644 --- a/learning/k8s-intermediate/workload/pod.md +++ b/learning/k8s-intermediate/workload/pod.md @@ -49,7 +49,7 @@ Pod 的设计目的是用来支持多个互相协同的容器,是的他们形 ::: tip 提示 将多个容器运行于同一个容器组中是一种相对高级复杂的使用方法。只有在您的容器相互之间紧密耦合是,您才应该使用这种方式。例如:您可能有一个容器是 web server,用来将共享数据卷中的文件作为网站发布出去,同时您有另一个 "sidecar" 容器从远程抓取并更新这些文件。如下图所示: - +Kubernetes教程:Pod中的多个容器 ::: diff --git a/learning/k8s-intermediate/workload/workload.md b/learning/k8s-intermediate/workload/workload.md index e3efd87..eab7b1f 100644 --- a/learning/k8s-intermediate/workload/workload.md +++ b/learning/k8s-intermediate/workload/workload.md @@ -51,9 +51,9 @@ Kubernetes 通过引入 Controller(控制器)的概念来管理 Pod 实例 在 Kuboard 工作负载编辑器中,控制器的概念如下图所示: - +Kubernetes教程:控制器概念结构 **界面如下图所示:** -![image-20190910232736012](./workload.assets/image-20190910232736012.png) +![Kubernetes教程:控制器概念结构](./workload.assets/image-20190910232736012.png) diff --git a/learning/k8s-practice/micro-service/kuboard-view-of-k8s.md b/learning/k8s-practice/micro-service/kuboard-view-of-k8s.md index a3bb9f0..3e3491e 100644 --- a/learning/k8s-practice/micro-service/kuboard-view-of-k8s.md +++ b/learning/k8s-practice/micro-service/kuboard-view-of-k8s.md @@ -16,7 +16,7 @@ description: 本文描述了一个经典微服务参考架构,并且通过三 作者在落地 Spring Cloud 微服务的过程中,设计了如下图所示的微服务参考架构: -![image-20190731230110206](./kuboard-view-of-k8s.assets/image-20190731230110206.png) +![Kubernetes教程:Kubernetes实战-微服务参考架构](./kuboard-view-of-k8s.assets/image-20190731230110206.png) 该图的左侧是 DevOps 平台,涵盖构建、测试、包管理、部署及运维、监控及评估。右侧是运行时平台,分成互联网层、展现层、微服务层、数据层。 @@ -54,7 +54,7 @@ description: 本文描述了一个经典微服务参考架构,并且通过三 在解决这些问题的过程中,最终摸索出了一套以 Kubernetes 为关键环节的微服务 DevOps 平台。 -![image-20190809173443557](./kuboard-view-of-k8s.assets/image-20190809173443557.png) +![Kubernetes教程:DevOps平台](./kuboard-view-of-k8s.assets/image-20190809173443557.png) 如上图所示,假设有20+ 开发人员, @@ -88,7 +88,7 @@ Kuboard 诞生于 Spring Cloud 微服务落地的实践过程中,他在管理 如下图所示:***Kuboard 集群概览界面*** -![image-20190723105809872](./kuboard-view-of-k8s.assets/image-20190723105809872.png) +![Kubernetes教程:Kuboard集群概览页](./kuboard-view-of-k8s.assets/image-20190723105809872.png) Kuboard 集群概览视角,映射了 Kubernetes 中的如下几个重要概念: @@ -112,7 +112,7 @@ Kuboard 集群概览视角,映射了 Kubernetes 中的如下几个重要概念 如下图所示:***Kuboard名称空间截图*** -![image-20190721154650916](./kuboard-view-of-k8s.assets/image-20190721154650916.jpg) +![Kubernetes教程:Kuboard名称空间](./kuboard-view-of-k8s.assets/image-20190721154650916.jpg) Kuboard 名称空间视角,映射了 Kubernetes 中的如下几个重要概念: @@ -140,7 +140,7 @@ Kuboard 名称空间界面中,还为典型的运维场景提供了便捷的操 Kubernetes 中,与 Workload 相关的概念非常多,Kuboard 从微服务部署的实际需要出发,按照下图所示的方式理解这些相关概念: -![image-20190731221630097](./kuboard-view-of-k8s.assets/image-20190731221630097.png) +![Kubernetes教程:Kuboard工作负载页](./kuboard-view-of-k8s.assets/image-20190731221630097.png) Kuboard 工作负载视图中,关联的 Kubernetes 中如下几个重要的概念: @@ -155,7 +155,7 @@ Kuboard 工作负载视图中,关联的 Kubernetes 中如下几个重要的概 Kuboard 认为,掌握这些概念并正确理解这些概念的关系之后,就可以胜任使用 Kubernetes 部署微服务的工作,为了使事情变得更简单,避免编写冗长的 YAML 文件,Kuboard 以此概念为基础,设计了 Kuboard 工作负载编辑器,如下图所示: -![image-20190722162249531](./kuboard-view-of-k8s.assets/image-20190722162249531.png) +![Kubernetes教程:Kuboard工作负载编辑器](./kuboard-view-of-k8s.assets/image-20190722162249531.png) ## 微服务 + 监控/评估 @@ -172,7 +172,7 @@ Kuboard 认为,掌握这些概念并正确理解这些概念的关系之后, Kuboard 认为,应该以微服务视角的视角快速查看到该无服务在不同层面的监控结果。因此,在 Kuboard 的工作负载(微服务)查看界面中,可以直接点击进入不同监控系统对应的监控结果,无需再监控系统内反复查找。如一下截图所示: -![image-20190809220543742](./kuboard-view-of-k8s.assets/image-20190809220543742.png) +![Kubernetes教程:Kuboard监控](./kuboard-view-of-k8s.assets/image-20190809220543742.png) 点击图中 ***Nginx 监控***、 ***容器组监控***、 ***所在节点监控*** 等按钮,可以直接打开该容器组对应的监控界面。因为篇幅的限制,此处不再展开描述,请点击 Kuboard 在线体验 diff --git a/learning/k8s-practice/spring-cloud/README.md b/learning/k8s-practice/spring-cloud/README.md index edc58de..f822924 100644 --- a/learning/k8s-practice/spring-cloud/README.md +++ b/learning/k8s-practice/spring-cloud/README.md @@ -32,7 +32,7 @@ description: 微服务参考架构:包含微服务运行时、构建及测试 展现层、网关层、服务层、中间件层以及监控层,都运行于 Kubernetes 之上,由 Kuboard 管理。 -![image-20190731230110206](./README.assets/image-20190731230110206.png) +![Kubernetes教程:微服务参考架构](./README.assets/image-20190731230110206.png) @@ -40,7 +40,7 @@ Spring Cloud on Kubernetes 并不对 Spring Cloud 架构、组件等做过多解 为了更好地阐述此主题,作者准备了一个最简单的微服务 example 作为例子,该 example 只实现了对一张简单数据库表执行 CRUD 操作的功能,该 example 的部署架构如下图所示,源代码请参考 [kuboard-example](https://github.com/eip-work/kuboard-example),您也可以直接通过 Kuboard [导入 example 微服务](/guide/example/import.html) -![image-20190801063223432](./README.assets/image-20190801063223432.png) +![Kubernetes教程:SpringCloud Example](./README.assets/image-20190801063223432.png) diff --git a/overview/README.md b/overview/README.md index 8f5f76f..442898c 100644 --- a/overview/README.md +++ b/overview/README.md @@ -4,7 +4,7 @@ description: 介绍 Kuboard - Kubernetes 微服务管理界面,并为 Kubernet ## Kuboard 简介 - +Kubernetes教程:Kuboard Logo
- + Kubernetes教程:Kuboard 在线Demo ## 开始使用 @@ -135,7 +135,7 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径: * 服务发现、负载均衡、网络 * [Service 概述](/learning/k8s-intermediate/service/service.html) * [Service 详细描述](/learning/k8s-intermediate/service/service-details.html) - * [Service/Pod 的 DNS](/learning/k8s-intermediate/service/dns.html) + * [Service/Pod 的 DNS](/learning/k8s-intermediate/service/dns.html) * [Service 连接应用程序](/learning/k8s-intermediate/service/connecting.html) * [Ingress 通过互联网访问您的应用](/learning/k8s-intermediate/service/ingress.html) * [如何选择网络插件](/learning/k8s-intermediate/service/cni.html) @@ -201,7 +201,7 @@ Kuboard 为您的这些痛苦提供了极佳的解决方案,请立刻开始:

- + Kubernetes教程:QQ群在线答疑