diff --git a/.vuepress/components/HomePage.vue b/.vuepress/components/HomePage.vue index c74e507..4214835 100644 --- a/.vuepress/components/HomePage.vue +++ b/.vuepress/components/HomePage.vue @@ -47,9 +47,9 @@ -

+

Slogon:Kuboard_快速在Kubernetes上落地微服务 -

+

diff --git a/.vuepress/config.js b/.vuepress/config.js index ca7ba47..fad00bd 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -298,7 +298,7 @@ module.exports = { ] }, { - title: 'Secrets', + title: 'Secret', collapsable: true, children: [ 'k8s-intermediate/config/secrets/', @@ -307,7 +307,7 @@ module.exports = { 'k8s-intermediate/config/secrets/create-generator', 'k8s-intermediate/config/secrets/create-kuboard', 'k8s-intermediate/config/secrets/decode-edit', - // 'k8s-intermediate/config/secrets/use-scenarios', + 'k8s-intermediate/config/secrets/use-case-ingress-tls', // 'k8s-intermediate/config/secrets/use-as_file', // 'k8s-intermediate/config/secrets/use-as_env', // 'k8s-intermediate/config/secrets/use-image-pull-secrets', diff --git a/learning/README.md b/learning/README.md index 2541e6e..cdd3c1c 100644 --- a/learning/README.md +++ b/learning/README.md @@ -14,7 +14,7 @@ meta: * Kubernetes 初学者 * 学习过 Kubernetes,但在投产过程中仍有诸多疑虑和困惑的技术爱好者 -

+

Kubernetes管理界面:Kuboard Logo

diff --git a/learning/k8s-intermediate/config/secrets/create-generator.md b/learning/k8s-intermediate/config/secrets/create-generator.md index ffae138..c0ba539 100644 --- a/learning/k8s-intermediate/config/secrets/create-generator.md +++ b/learning/k8s-intermediate/config/secrets/create-generator.md @@ -7,7 +7,7 @@ meta: content: Kubernetes教程,K8S教程,Kubernetes Secret,Kubernetes Generator --- -# 创建Secrets(使用Generator) +# 创建Secret(使用Generator) 从 kubernetes v1.14 开始,kubectl 集成了 [Kustomize](https://kustomize.io/)。通过 Kustomize,您可以使用 generator(Kustomize 的概念)创建 Secret,并保存到 API Server。Generator 必须在 `kustomization.yaml` 文件中指定。 diff --git a/learning/k8s-intermediate/config/secrets/create-kubectl.md b/learning/k8s-intermediate/config/secrets/create-kubectl.md index 81bec2b..eec3f1d 100644 --- a/learning/k8s-intermediate/config/secrets/create-kubectl.md +++ b/learning/k8s-intermediate/config/secrets/create-kubectl.md @@ -7,7 +7,7 @@ meta: content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门 --- -# 创建Secrets(使用kubectl) +# 创建Secret(使用kubectl) 假设某个 Pod 需要访问数据库。在您执行 kubectl 命令所在机器的当前目录,创建文件 `./username.txt` 文件和 `./password.txt` 暂存数据库的用户名和密码,后续我们根据这两个文件配置 kubernetes secrets。 diff --git a/learning/k8s-intermediate/config/secrets/create-kuboard.md b/learning/k8s-intermediate/config/secrets/create-kuboard.md index 1c78f87..c370de0 100644 --- a/learning/k8s-intermediate/config/secrets/create-kuboard.md +++ b/learning/k8s-intermediate/config/secrets/create-kuboard.md @@ -7,7 +7,7 @@ meta: content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门,创建Secret --- -# 创建Secrets(使用Kuboard) +# 创建Secret(使用Kuboard) 本文简要描述如何在 Kuboard 中创建 Kubernetes Secret。 @@ -18,12 +18,12 @@ Kubernetes Secret 必须从属于某一个名称空间,进入 Kuboard 名称 - ![image-20190925232823416](./create-kuboard.assets/image-20190925232823416.png) + ![Kubernetes教程_使用Kuboard创建Secret](./create-kuboard.assets/image-20190925232823416.png) * 点击 **创建** 按钮,可显示 Secret 的创建界面,如下图所示: - ![image-20190925232914884](./create-kuboard.assets/image-20190925232914884.png) + ![Kubernetes教程_使用Kuboard创建Secret](./create-kuboard.assets/image-20190925232914884.png) * 可以创建的 Secret 类型有: * docker 仓库密码 diff --git a/learning/k8s-intermediate/config/secrets/create-manually.md b/learning/k8s-intermediate/config/secrets/create-manually.md index 57b7657..37986be 100644 --- a/learning/k8s-intermediate/config/secrets/create-manually.md +++ b/learning/k8s-intermediate/config/secrets/create-manually.md @@ -7,7 +7,7 @@ meta: content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门,创建Secret --- -# 创建Secrets(手动) +# 创建Secret(手动) 和创建其他类型的 API 对象(Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret,然后通过 `kubectl apply -f` 命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret: * **data**:使用 data 字段时,取值的内容必须是 base64 编码的 diff --git a/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145325899.png b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145325899.png new file mode 100644 index 0000000..fc3c549 Binary files /dev/null and b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145325899.png differ diff --git a/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145717667.png b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145717667.png new file mode 100644 index 0000000..72e71a7 Binary files /dev/null and b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.assets/image-20191002145717667.png differ diff --git a/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.md b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.md new file mode 100644 index 0000000..48a65d4 --- /dev/null +++ b/learning/k8s-intermediate/config/secrets/use-case-ingress-tls.md @@ -0,0 +1,53 @@ +--- +vssueId: 106 +layout: LearningLayout +description: Kubernetes教程_在Kubernetes中_使用Secret存储TLS证书_并激活Kubernetes_Ingress_HTTPS +meta: + - name: keywords + content: Kubernetes教程,Ingress HTTPS,Ingress TLS证书,Ingress HTTPS证书 +--- + +# 使用Secret存储Ingress TLS证书 + + + +可以直接在 Ingress 中配置 HTTPS 证书,使得你的网站支持 HTTPS 协议。 + + + +## 创建证书 + +如果您为自己的测试域名购买证书,可到阿里云 [SSL证书](https://www.aliyun.com/product/cas?spm=5176.12825654.eofdhaal5.136.e9392c4ax2Hoq2&aly_as=tcRolWYa) 产品页申请免费证书。在下载证书时,请选择 nginx 证书下载,解压缩下载到的 zip 文件后,您将获得一个 .key 私钥文件和一个 .pem 公钥文件 + +## 创建Secret + +* 在 Kuboard 界面中进入名称空间页,点击 **Secrets 创建** 按钮 + + 填写表单,如下图所示: + + * 选择类型为 TLS + * 将 .key 文件中的内容填入 tls.key 字段 + * 将 .pem 文件中的内容填入 tls.crt 字段 + + ![Kubernetes教程_为Ingress创建Secret](./use-case-ingress-tls.assets/image-20191002145325899.png) + +* 点击 **保存** 按钮 + +## 在Ingress中引用Secret + +* 在 Kuboard 界面中,点击要激活 HTTPS 的工作负载,进入编辑页面,如下图所示: + + 在 **互联网入口 Ingress** 区域,勾选 HTTPS,并选择刚才创建好的 Secret + + ![Kubernetes教程_在Ingress中使用Secret](./use-case-ingress-tls.assets/image-20191002145717667.png) + +* 点击 **保存** 按钮 +* 在浏览器打开对应的域名,验证 HTTPS 是否生效 + +::: tip + +申请证书时,所填写的域名必须与Ingress配置的域名一致。 + +::: + +:tada: :tada: :tada: 您已成功为 Ingress 配置了 HTTPS 证书。 diff --git a/learning/k8s-intermediate/config/taints-toleration/taint-based-evictions.md b/learning/k8s-intermediate/config/taints-toleration/taint-based-evictions.md index 4db3f32..56640a7 100644 --- a/learning/k8s-intermediate/config/taints-toleration/taint-based-evictions.md +++ b/learning/k8s-intermediate/config/taints-toleration/taint-based-evictions.md @@ -15,6 +15,12 @@ meta: * 容忍该污点的 Pod 在未指定 `tolerationSeconds` 的情况下,将继续在该节点上运行 * 容忍该污点的 Pod 在指定了 `tolerationSeconds` 的情况下,将在指定时间超过时从节点上驱逐 +::: tip +`tolerationSeconds` 字段可以理解为 Pod 容忍该污点的 `耐心`: +* 超过指定的时间,则达到 Pod 忍耐的极限,Pod 离开所在节点 +* 不指定 `tolerationSeconds`,则认为 Pod 对该污点的容忍是无期限的 +::: + 此外,自 kubernetes 1.6 以来,kubernetes 的节点控制器在碰到某些特定的条件时,将自动为节点添加污点。这类污点有: * `node.kubernetes.io/not-ready`: 节点未就绪。对应着 NodeCondition `Ready` 为 `False` 的情况 * `node.kubernetes.io/unreachable`: 节点不可触达。对应着 NodeCondition `Ready` 为 `Unknown` 的情况 diff --git a/overview/README.md b/overview/README.md index 11a5a29..3948f35 100644 --- a/overview/README.md +++ b/overview/README.md @@ -8,7 +8,7 @@ meta: ## Kuboard简介 -

+

Kubernetes管理界面:Kuboard Logo

diff --git a/overview/share-coder.assets/image-20191002073039330.png b/overview/share-coder.assets/image-20191002073039330.png new file mode 100644 index 0000000..9005123 Binary files /dev/null and b/overview/share-coder.assets/image-20191002073039330.png differ diff --git a/overview/share-coder.assets/image-20191002073210761.png b/overview/share-coder.assets/image-20191002073210761.png new file mode 100644 index 0000000..f0a6d27 Binary files /dev/null and b/overview/share-coder.assets/image-20191002073210761.png differ diff --git a/overview/share-coder.assets/image-20191002073245932.png b/overview/share-coder.assets/image-20191002073245932.png new file mode 100644 index 0000000..93843e1 Binary files /dev/null and b/overview/share-coder.assets/image-20191002073245932.png differ diff --git a/overview/share-coder.md b/overview/share-coder.md new file mode 100644 index 0000000..811c4a4 --- /dev/null +++ b/overview/share-coder.md @@ -0,0 +1,163 @@ +# Kuboard介绍 + + + +Kubernetes 容器编排已越来越被大家关注,然而学习 Kubernetes 的门槛却依然很高,主要体现在这几个方面: + +* 集群的安装复杂 + +* Kubernetes相较于容器,引入了许多新的概念 + +* 需要手工编写 YAML 文件 + +* 没有好的参考案例可以遵循 + + + +今天给大家介绍的这款工具 Kuboard,是一款免费的 Kubernetes 图形化管理工具,Kuboard 力图帮助用户快速在 Kubernetes 上落地微服务。为了达到此目标,Kuboard 提供了针对上述问题的解决办法: + +* Kuboard 官网提供 Kubernetes 免费安装文档、免费在线答疑,每天约有 200 位网友参照 Kuboard 提供的文档进行 K8S 集群安装。 +* Kuboard 官网提供 Kubernetes 免费中文教程、用户无需付费购买视频教程或参加线下培训班,就可参照 Kuboard 提供的免费教程完成 K8S 的学习,更有 QQ 社群可以和网友互相讨论,共同进步。 +* Kuboard 是 Kubernetes 的一款图形化管理工具,使用 Kuboard,用户无需编写 YAML 文件,就可以完成应用程序的部署和管理。 +* Kuboard 官网提供 Spring Cloud 等微服务参考架构在 K8S 上的详细部署文档和步骤,是 Spring Cloud 用户将自己的应用迁移到 K8S 部署环境的非常好的参考资料。 + + + +Kuboard 官网地址:[https://kuboard.cn](https://kuboard.cn/#from_coder_toutiao) + + + +## 安装Kuboard + +如果您已经有了 Kubernetes 集群,只需要一行命令即可安装 Kuboard: + +``` sh +kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml +``` + +然后访问您集群中任意节点的 32567 端口(http://any-of-your-node-ip:32567),即可打开 Kuboard 界面。 + + + +## 使用Kuboard + +Kuboard 通过三层界面来管理 Kubernetes 以及部署在其上的微服务应用,使得一个非常复杂的系统变得易于理解: + +1. 集群概览层 + + Kuboard 中查看集群概览的界面如下图所示,下层由 Kubernetes 的计算资源和存储资源组成,上层则是应用的名称空间。 + + ![image-20191002073039330](./share-coder.assets/image-20191002073039330.png) + +2. 名称空间层 + + 进入 Kuboard 名称空间界面后,可以看到该名称空间下部署的所有应用、配置信息、存储卷声明,以及在名称空间内可执行的操作,例如创建工作负载、导出工作负载、导入工作负载、容器组列表、调整镜像版本等。 + + 这里比较特殊的一点是,Kuboard 以分层的方式展现微服务架构的经典分层,包括展现层、API网关层、微服务层、持久层、中间件层和监控层。 + + ![image-20191002073210761](./share-coder.assets/image-20191002073210761.png) + +3. 工作负载层 + + 从名称空间点击某一个应用模块后,可进入到工作负载的详情页。在这里可以看到控制器(Deployment、StatefulSet、DaemonSet等)的详细信息,也可以看到其管理的 Pod 的详情、监控、Pod 的日志、Pod的命令行控制台等。 + + 在 Kuboard 工作负载编辑器里,可以通过图形界面完成应用的部署和管理、伸缩、卸载等操作,而无需编写复杂的 yaml 文件。 + + ![image-20191002073245932](./share-coder.assets/image-20191002073245932.png) + + + +## Kubernetes免费教程 + +### **Kubernetes 体验** + +* 安装 Kubernetes 单Master节点(30分钟,初学者也许需要更多) + +* 安装微服务管理界面(5分钟) + +* 创建 busybox(10分钟) + +* 导入 example 微服务应用(15分钟) + +### **Kubernetes 入门** + +* 0. 学习Kubernetes基础知识 (10分钟) + +* 1. 部署一个应用程序 (5分钟) + +* 2. 查看 Pods / Nodes (10分钟) + +* 3. 公布应用程序 (10分钟) + +* 4. 伸缩应用程序 (10分钟) + +* 5. 执行滚动更新 (10分钟) + +* 6. 复习Kubernetes核心概念 (10分钟) + +### **Kubernetes 进阶** + +* 使用私有 registry 中的 docker 镜像 + +* 工作负载 + * 容器组 - 概述 + * 容器组 - 生命周期 + * 容器组 - 初始化容器 + * 控制器 - 概述 + * 控制器 - Deployment + * 控制器 - StatefulSet + * 控制器 - DaemonSet + * 控制器 - Job + * 控制器 - CronJob + +* 服务发现、负载均衡、网络 + * Service 概述 + * Service 详细描述 + * Service/Pod 的 DNS + * Service 连接应用程序 + * Ingress 通过互联网访问您的应用 + * 如何选择网络插件 + +* 存储 + * 数据卷 Volume + * 存储卷 PV 和存储卷声明 PVC + * 存储类 StorageClass + * 自建 NFS 服务 + +* 配置 + * 使用 ConfigMap 配置您的应用程序 + * 管理容器的计算资源 + * 将容器调度到指定的节点 + * 污点和容忍 taints and toleration + * Secrets + +### **Kubernetes 高级** + +* Kubernetes 日志可视化 + +* Kubernetes 监控 + +* Kubernetes 联邦 + +## Spring Cloud在Kubernetes上的部署实战 + +在 Kubernetes 上部署 Spring Cloud 微服务 + +* 准备 + * 准备OCP的构建环境和部署环境 + * 构建docker镜像并推送到仓库 + +* 部署 + * 部署顺序 + * 在K8S上部署eureka-server + * 在K8S上部署mysql + * 在K8S上部署redis + * 在K8S上部署auth-server + * 在K8S上部署user-center + * 在K8S上部署api-gateway + * 在K8S上部署back-center + * 重新审视配置信息 + +* 多环境 + * 导出部署配置 + * 导入部署配置 \ No newline at end of file