K8S实战(二十一)| 部署策略:蓝绿部署+滚动部署+灰度部署+金丝雀部署

2020-09-19
阅读 1 分钟
6.2k
前言应用程序的更新发布,如何降低对用户的影响面,人们研究出了几种发布策略。更新历史20200720 - 初稿 - 左程立原文地址 - [链接]蓝绿部署流程准备 A/B 两个集群,运行相同的程序。在项目升级时,首先把 A 集群从负载均衡中移除,进行新版本的部署。B 集群仍提供服务。A 集群升级完成后加入负载均衡,B 集群从负载均衡...

K8S实战(二十)| 企业私有镜像仓库

2020-09-19
阅读 3 分钟
3.1k
前言私有仓库用于企业内部私有 Docker 镜像的存储。可以将私有仓库安装到 K8S 集群中。Harbor 镜像仓库是由 VMware 开源的一款企业级镜像仓库系统。更新历史20200719 - 初稿 - 左程立原文地址 - [链接]自定义证书 {代码...} {代码...} {代码...} {代码...} 安装 harbor {代码...} {代码...} 查看安装情况和服务地址 {代...

K8S实战(十九)| K8S 包管理 Helm

2020-09-19
阅读 2 分钟
3.5k
前言类似于 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。Helm, 一个二进制工具,用来安装、升级、卸载 K8S 中的应用程序。Helm Chart,一个 tgz 包,类似安卓的 APK。K8S 应用打包成 Chart,通过 Helm 安装到 K8S 集群中。更新历史20200717 - 初稿 - 左程立原文地址 - [链接]Helm 包管理工具安装 Helm,解压到 /usr/...

K8S实战(十八)| 容器资源分配和资源限制

2020-09-19
阅读 5 分钟
5.8k
前言为了防止容器调度到资源不足的节点上,可以为容器指定资源最少要求量。为了防止容器无节制的使用 CPU、内存 等资源,可以为容器指定资源最大允许使用量。更新历史20200714 - 初稿 - 左程立原文地址 - [链接]资源请求和资源约束可以为容器指定资源请求量和资源约束量。资源一般指 CPU、内存。资源请求量,指容器要求...

K8S实战(十七)| 通过 StorageClass 实现动态卷供应

2020-09-19
阅读 2 分钟
7.3k
StorageClass 相当于一个创建 PV 的模板,用户通过 PVC 申请存储卷,StorageClass 通过模板自动创建 PV,然后和 PVC 进行绑定。

K8S实战(十六)| 持久化存储卷

2020-09-19
阅读 3 分钟
2.7k
前言PV 用来定义持久化存储卷,可将外部存储如 NFS/GFS/CFS 等定义为一个 K8S 内部对象,是一个服务提供者。PVC 会寻找合适的 PV 进行绑定,绑定成功后,PVC 就可以提供给 pod 使用。更新历史20200710 - 初稿 - 左程立原文地址 - [链接]定义 PV/PVC定义一个 PV {代码...} 定义一个 PVC {代码...} {代码...} PVC 会查找 s...

K8S实战(十五)| 存储卷概念

2020-09-19
阅读 3 分钟
3.4k
前言容器中的文件在磁盘上是临时存放,容器崩溃重启后,容器将被以干净状态重建,崩溃之前创建的文件将被清除。K8S 使用卷的概念来管理容器生成的需持久化的文件,卷也可用于同一个 Pod 中多个容器之间共享文件。更新历史20200708 - 初稿 - 左程立原文地址 - [链接]Volume 的类型emptyDir 卷容器崩溃并不会导致 Pod 被从...

K8S实战(十四)| ConfigMap 对象

2020-09-19
阅读 3 分钟
3.6k
前言ConfigMap 对象可以用来管理普通的、非机密的配置信息,以明文形式存放。Secret 对象用来管理重要的、机密的、不能泄露的类似秘钥、密码等信息。ConfigMap 对象可以实现程序的配置和程序本身的解耦,从而使程序更具移植性。更新历史20200705 - 初稿 - 左程立原文地址 - [链接]通过目录/文件创建 ConfigMap从目录创建...

K8S实战(十三)| Secret 对象

2020-09-18
阅读 3 分钟
3.1k
前言Secret 可以用来保存密码、密钥等敏感信息,避免密钥直接放在 Pod 的YAML定义文件或容器镜像中导致的泄露问题。密钥使用 Base64 编码形式存储于 Secret 对象中,Pod 挂载后自动解码为明文。更新历史20200702 - 初稿 - 左程立原文地址 - [链接]通过 kubectl 创建 Secret创建用户名/密码文件 {代码...} 写入 Secret 对...

K8S实战(十二)| 为 Ingress 以及后端 Nginx 增加证书

2020-09-18
阅读 4 分钟
6.6k
前言前面 nginx 都是 http 协议在工作,那么加证书应该如何操作。更新历史20200701 - 初稿 - 左程立原文地址 - [链接]创建证书可以网上申请一年免费证书,也可以自建证书。下面自建证书。下载自建证书脚本 {代码...} 创建证书文件 {代码...} 将证书写入到 K8S 的 secret 中 {代码...} 将 nginx 配置写入到 K8S 的 config...

K8S实战(十一)| Service 的 Service:Ingress

2020-09-18
阅读 8 分钟
4.2k
ingress 可以理解为 Service 的 Service,即在现有 Service 的前面再搭建一层 Service,作为外部流量的统一入口,进行请求路由的转发。

K8S实战(十)| Service

2020-09-18
阅读 5 分钟
3.1k
前言Pod 已经成功运行起来了,但是有两个问题。一是这些 Pod 无法从集群外部直接访问到,二是 Pod 出现故障自愈后,IP 会发生变化。如何解决这两个问题,这里有一个非常重要的概念:Service更新历史20200625 - 初稿 - 左程立原文地址 - [链接]Service 的意义和特点对一组 Pod 提供负载均衡(工作在 TCP/UDP 4 层)防止 P...

K8S实战(九)| 控制器 DaemonSet - 将守护进程容器化

2020-09-18
阅读 4 分钟
2.5k
前言Deployment 管理的 Pod 允许在一个节点上运行多个副本。当需要在节点上运行收集日志或者执行监控任务的容器时,显然不适合启动多个 Pod 副本。这种场景下,我们可以启用 DaemonSet 控制器来管理 Pod。更新历史20200620 - 初稿 - 左程立原文地址 - [链接]Daemon Pod 的特点Pod 运行在集群中的全部或者部分节点上每个...

K8S实战(八)| Job 和 CronJob

2020-09-18
阅读 5 分钟
3.3k
前言容器分为两类在线业务 - 服务类容器需要持续不中断的提供服务,容器需要一直运行离线业务 - 工作类容器一般执行一次性任务,比如统计日志数据等,运行完成后容器即可关闭更新历史20200618 - 初稿 - 左程立原文地址 - [链接]Jobcat job.yaml {代码...} 参数restartPolicy 只能是 Never 或者 onFailure启动 {代码...} ...

K8S实战(七)| 有状态应用之 MySQL 集群

2020-09-18
阅读 4 分钟
6.1k
前言本节使用 StatefulSet 控制器部署一个 MySQL 集群,然后进行宕机测试,观察集群是否可以正常恢复使用并且不丢失数据。实现的集群有如下特征:是一个主从复制的 MySQL 集群1 个主节点, 多个从节点从节点能够水平扩展所有的写操作,只能在主节点上执行读操作可以在所有节点上执行更新历史20200615 - 初稿 - 左程立原...

K8S实战(六)| 配置 NFS 动态卷提供持久化存储

2020-09-18
阅读 7 分钟
8.4k
本节中 K8S 使用 NFS 远程存储,为托管的 pod 提供了动态存储服务,pod 创建者无需关心数据以何种方式存在哪里,只需要提出需要多大空间的申请即可。

K8S实战(五)| 控制器 StatefulSet 的原理

2020-09-18
阅读 2 分钟
2.5k
前言Deployment 中可以随意的关闭和启动一个 Pod,Pod 之间的关系是平等的。当 Pod 之间有主从关系,以及每个 Pod 对应特定的存储卷中的内容时,无法使用 Deployment 控制器来随意的操作 Pod。我们需要使用一个叫做 StatefulSet 的控制器来处理这种有状态应用 Pod。更新历史20200605 - 初稿 - 左程立原文地址 - [链接]St...

K8S实战(四)| 控制器 Deployment

2020-09-18
阅读 4 分钟
1.9k
前言上一节说到直接创建的 Pod 没有自愈功能。使用控制器创建的 Pod 才能故障自愈,那么什么是控制器呢。可以这么理解,容器是光秃秃的箱子,Pod 把箱子进行了包装以方便 K8S 挂载。那么 K8S 一次挂载几个 Pod,如何挂载,这些信息都由控制器来指定和管理。控制器包含很多种,本节实践 Deployment 控制器。更新历史20200...

K8S实战(三)| Pod 的本质

2020-09-18
阅读 7 分钟
3.9k
Pod 包装了一个或多个容器。Pod 是 K8S 的最小执行单元。Pod 是 K8S 中的一个进程。Pod 可包装 Docker,也支持包装其他类型容器。Pod 包含封装的容器、存储资源、网络资源、以及指导容器如何运行的配置。

K8S实战(二)| 发布容器到 K8S 集群中

2020-09-18
阅读 3 分钟
1.9k
前言今天在 K8S 集群中跑一个容器化应用。更新历史20200518 - 初稿 - 左程立原文地址 - [链接]如何发布容器到 K8S 中容器来源使用 nginx 的官方容器镜像。发布容器的两种方式镜像有了,我们如何将其提交给 K8S 运行呢,有两种方式:命令行方式(不推荐)。配置文件方式(推荐)。这里使用官方推荐的第二种方式,即通过将...

K8S实战(一)| 运营管理生产级 K8S 高可用集群之初始化

2020-09-18
阅读 8 分钟
2.3k
前言春暖花开的五月,疫情基本过去,值得庆贺,在这美好的日子里我们来实战一下 K8S 的高可用负载均衡集群吧。更新历史2020 年 05月 07 日 - 初稿 - 左程立原文地址 - [链接]平台环境软件信息CentOS Linux release 7.7.1908 (Kernel 3.10.0-1062.18.1.el7.x86_64)Docker CE 18.09.9Kubernetes v1.18.2Calico v3.8Keepali...