- 博客(21)
- 收藏
- 关注
原创 K8S实战(二十一)| 部署策略:蓝绿部署+滚动部署+灰度部署+金丝雀部署
前言 应用程序的更新发布,如何降低对用户的影响面,人们研究出了几种发布策略。 更新历史 20200720 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/20/how-to-deployment.html 蓝绿部署 流程 准备 A/B 两个集群,运行相同的程序。 在项目升级时,首先把 A 集群从负载均衡中移除,进行新版本的部署。 B 集群仍提供服务。 A 集群升级完成后加入负载均衡,B 集群从负载均衡中移除。 优点 平滑发布,不会因发布导致服务中断
2020-09-20 11:13:58
837
原创 K8S实战(二十)| 企业私有镜像仓库
前言 私有仓库用于企业内部私有 Docker 镜像的存储。 可以将私有仓库安装到 K8S 集群中。 Harbor 镜像仓库是由 VMware 开源的一款企业级镜像仓库系统。 更新历史 20200719 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/19/harbor.html 自定义证书 openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650
2020-09-19 22:55:45
343
原创 K8S实战(十九)| K8S 包管理 Helm
前言 类似于 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。 Helm, 一个二进制工具,用来安装、升级、卸载 K8S 中的应用程序。 Helm Chart,一个 tgz 包,类似安卓的 APK。 K8S 应用打包成 Chart,通过 Helm 安装到 K8S 集群中。 更新历史 20200717 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/17/k8s-package-manager-helm.html Helm 包管理
2020-09-19 22:55:32
470
原创 K8S实战(十八)| 容器资源分配和资源限制
前言 为了防止容器调度到资源不足的节点上,可以为容器指定资源最少要求量。 为了防止容器无节制的使用 CPU、内存 等资源,可以为容器指定资源最大允许使用量。 更新历史 20200714 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/14/container-resources-request-limit.html 资源请求和资源约束 可以为容器指定资源请求量和资源约束量。 资源一般指 CPU、内存。 资源请求量,指容器要求节点分配的最小容量,如果
2020-09-19 22:55:19
1901
原创 K8S实战(十七)| 通过 StorageClass 实现动态卷供应
前言 StorageClass 相当于一个创建 PV 的模板,用户通过 PVC 申请存储卷,StorageClass 通过模板自动创建 PV,然后和 PVC 进行绑定。 更新历史 20200712 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/12/storageclass.html 启用动态卷供应 创建 StorageClass 对象即可,即创建了模板。 apiVersion: storage.k8s.io/v1 kind: Stor
2020-09-19 22:54:26
712
原创 K8S实战(十六)| 持久化存储卷
前言 PV 用来定义持久化存储卷,可将外部存储如 NFS/GFS/CFS 等定义为一个 K8S 内部对象,是一个服务提供者。 PVC 会寻找合适的 PV 进行绑定,绑定成功后,PVC 就可以提供给 pod 使用。 更新历史 20200710 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/10/storage-pv-pvc.html 定义 PV/PVC 定义一个 PV [root@master01 ~]# cat pv.yaml apiVersi
2020-09-19 22:54:13
227
原创 K8S实战(十五)| 存储卷概念
前言 容器中的文件在磁盘上是临时存放,容器崩溃重启后,容器将被以干净状态重建,崩溃之前创建的文件将被清除。 K8S 使用卷的概念来管理容器生成的需持久化的文件,卷也可用于同一个 Pod 中多个容器之间共享文件。 更新历史 20200708 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/08/about-storage-volume.html Volume 的类型 emptyDir 卷 容器崩溃并不会导致 Pod 被从节点上移除,因此容
2020-09-19 22:54:00
321
原创 K8S实战(十四)| ConfigMap 对象
前言 ConfigMap 对象可以用来管理普通的、非机密的配置信息,以明文形式存放。 Secret 对象用来管理重要的、机密的、不能泄露的类似秘钥、密码等信息。 ConfigMap 对象可以实现程序的配置和程序本身的解耦,从而使程序更具移植性。 更新历史 20200705 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/05/about-configmap.html 通过目录/文件创建 ConfigMap 从目录创建 mkdir configmap
2020-09-19 22:53:46
229
原创 K8S实战(十三)| Secret 对象
前言 Secret 可以用来保存密码、密钥等敏感信息,避免密钥直接放在 Pod 的YAML定义文件或容器镜像中导致的泄露问题。 密钥使用 Base64 编码形式存储于 Secret 对象中,Pod 挂载后自动解码为明文。 更新历史 20200702 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/02/about-secret.html 通过 kubectl 创建 Secret 创建用户名/密码文件 echo -n 'username' >
2020-09-19 22:53:04
245
原创 K8S实战(十二)| 为 Ingress 以及后端 Nginx 增加证书
前言 前面 nginx 都是 http 协议在工作,那么加证书应该如何操作。 更新历史 20200701 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/07/01/nginx-https.html 创建证书 可以网上申请一年免费证书,也可以自建证书。下面自建证书。 下载自建证书脚本 wget -O Makefile https://raw.githubusercontent.com/kubernetes/examples/master/staging/
2020-09-19 22:52:39
1146
原创 K8S实战(十一)| Service 的 Service:Ingress
前言 ingress 可以理解为 Service 的 Service,即在现有 Service 的前面再搭建一层 Service,作为外部流量的统一入口,进行请求路由的转发。 说白了就是在前端搭建一个 nginx或者haproxy,将不同 host 或 url 转发到对应的后端 Service,再由 Service 转给 Pod。只不过 ingress 对 nginx/haproxy 进行了一些解耦和抽象。 更新历史 20200628 - 初稿 - 左程立 原文地址 - https://blog.zuo
2020-09-19 22:51:49
639
1
原创 K8S实战(十)| Service
前言 Pod 已经成功运行起来了,但是有两个问题。 一是这些 Pod 无法从集群外部直接访问到,二是 Pod 出现故障自愈后,IP 会发生变化。 如何解决这两个问题,这里有一个非常重要的概念:Service 更新历史 20200625 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/25/about-service.html Service 的意义和特点 对一组 Pod 提供负载均衡(工作在 TCP/UDP 4 层) 防止 Pod 更换 IP 失
2020-09-18 19:48:51
330
原创 K8S实战(九)| 控制器 DaemonSet - 将守护进程容器化
前言 Deployment 管理的 Pod 允许在一个节点上运行多个副本。 当需要在节点上运行收集日志或者执行监控任务的容器时,显然不适合启动多个 Pod 副本。 这种场景下,我们可以启用 DaemonSet 控制器来管理 Pod。 更新历史 20200620 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/20/about-controller-daemonset.html Daemon Pod 的特点 Pod 运行在集群中的全部或者部分节点上
2020-09-18 19:47:33
708
原创 K8S实战(八)| Job 和 CronJob
前言 容器分为两类 在线业务 - 服务类容器 需要持续不中断的提供服务,容器需要一直运行 离线业务 - 工作类容器 一般执行一次性任务,比如统计日志数据等,运行完成后容器即可关闭 更新历史 20200618 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/18/controller-job-cronjob.html Job cat job.yaml apiVersion: batch/v1 kind: Job metadata:
2020-09-18 19:46:19
340
原创 K8S实战(七)| 有状态应用之 MySQL 集群
前言 本节使用 StatefulSet 控制器部署一个 MySQL 集群,然后进行宕机测试,观察集群是否可以正常恢复使用并且不丢失数据。 实现的集群有如下特征: 是一个主从复制的 MySQL 集群 1 个主节点, 多个从节点 从节点能够水平扩展 所有的写操作,只能在主节点上执行 读操作可以在所有节点上执行 更新历史 20200615 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/15/statefulset-mysql-cluster.html
2020-09-18 19:45:39
315
原创 K8S实战(六)| 配置NFS动态卷提供持久化存储
前言 本节中 K8S 使用 NFS 远程存储,为托管的 pod 提供了动态存储服务,pod 创建者无需关心数据以何种方式存在哪里,只需要提出需要多大空间的申请即可。 总体流程是: 创建 NFS 服务器。 创建 Service Account。用来管控 NFS provisioner 在k8s集群中运行的权限。 创建 StorageClass。负责创建 PVC 并调用 NFS provisioner 进行预定的工作,并关联 PV 和 PVC。 创建 NFS provisioner。有两个功能,一个是在NF
2020-09-18 19:45:00
556
原创 K8S实战(五)| 控制器 StatefulSet 的原理
前言 Deployment 中可以随意的关闭和启动一个 Pod,Pod 之间的关系是平等的。 当 Pod 之间有主从关系,以及每个 Pod 对应特定的存储卷中的内容时,无法使用 Deployment 控制器来随意的操作 Pod。 我们需要使用一个叫做 StatefulSet 的控制器来处理这种有状态应用 Pod。 更新历史 20200605 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/05/about-controller-statefulset
2020-09-18 19:41:03
332
原创 K8S实战(四)| 控制器 Deployment
前言 上一节说到直接创建的 Pod 没有自愈功能。 使用控制器创建的 Pod 才能故障自愈,那么什么是控制器呢。 可以这么理解,容器是光秃秃的箱子,Pod 把箱子进行了包装以方便 K8S 挂载。 那么 K8S 一次挂载几个 Pod,如何挂载,这些信息都由控制器来指定和管理。 控制器包含很多种,本节实践 Deployment 控制器。 更新历史 20200601 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/06/01/about-controller-d
2020-09-18 19:36:17
231
原创 K8S实战(三)| Pod 的本质
前言 上一节发布了一个容器到 K8S 中,但其实实际操作的是 Pod ,那么为什么是 Pod,而不是容器。 更新历史 20200531 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/05/22/about-pod.html Pod 的本质 Pod 包装了一个或多个容器。 Pod 是 K8S 的最小执行单元。 Pod 是 K8S 中的一个进程。 Pod 可包装 Docker,也支持包装其他类型容器。 Pod 包含封装的容器、存储资源、网络资源、以及指导容
2020-09-18 19:35:49
290
原创 K8S实战(二)| 发布容器到 K8S 集群中
前言 今天在 K8S 集群中跑一个容器化应用。 更新历史 20200518 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/05/18/first-app-on-k8s.html 如何发布容器到 K8S 中 容器来源 使用 nginx 的官方容器镜像。 发布容器的两种方式 镜像有了,我们如何将其提交给 K8S 运行呢,有两种方式: 命令行方式(不推荐)。 配置文件方式(推荐)。 这里使用官方推荐的第二种方式,即通过将容器的各种信息写入配置文件提交给
2020-09-18 19:34:16
252
原创 K8S实战(一)| 运营管理生产级 K8S 高可用集群之初始化
前言 春暖花开的五月,疫情基本过去,值得庆贺,在这美好的日子里我们来实战一下 K8S 的高可用负载均衡集群吧。 更新历史 2020 年 05月 07 日 - 初稿 - 左程立 原文地址 - https://blog.zuolinux.com/2020/05/07/k8s-cluster-on-centos7.html 平台环境 软件信息 CentOS Linux release 7.7.1908 (Kernel 3.10.0-1062.18.1.el7.x86_64) Docker CE
2020-09-18 19:33:13
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人