第2步生产环境上 K8s 前,需要注意注意哪些问题|学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 快速学习第2步生产环境上 K8s 前,需要注意哪些问题

开发者学堂课程【云原生实践公开课第2步生产环境上 K8s 前,需要注意哪些问题】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/698/detail/12267


第2步 生产环境上 K8s 前,需要注意哪些问题


基础篇:5步上手 K8s

  • 第1步︰如何创建及部署应用
  • 第2步:上 K8 s应用到生产之前有哪些注意事项
  • 第3步:Kubernetes 集群的监控与日志
  • 第4步:关于 K8s 集群的弹性伸缩问题
  • 第5步∶怎样升级一个 Kubernetes 集群

 

内容介绍:

一、 课程介绍

二、 生产集群与应用部署

三、 资源的声明

四、 优雅上下线

五、 集群级生产准备介绍


一、 课程介绍

1. 应用级别生产 ready

资源声明

优雅上下线

2. 集群级别生产 ready

监控体系

日志体系

微服务体系

安全体系等


二、 生产集群与应用部署—集群创建

1. 集群创建

  • Minikube不具备生产环境使用的能力
  • 直接创建生产集群—阿里云托管 Kubernetes

打开阿里云的容器服务,创建标准的专有集群

集群名称open-classl

地域:华北2(北京)

Kubernetes版本1.16.9-aliyun.1

容器运行时:Docker 19.03.5

专有网络:(vpc-

虚拟交换机:switch_az_h

网络插件:Flannel

配置SNAT:为专有网络配置SNAT

公网访问:打开

安全组:自动创建企业级安全组

付费类型: 按量付费

Master 实例数量: 3

实力规格:高主频通用型hfg6

操作系统:默认

密码:********

选择配套组件,可以选默认的。之后勾选同意协议。

集群创建过程为10到15分钟之间。

使用集群

在集群的详情中有连接信息,连接集群的凭证,保存到本地,创建自己的环境。

  • 通过控制台创建集群

2. 生产集群与应用部署—应用部署

按照上一节课程里面的步骤来进行部署︰

(1) 生产环境的 mysql、redis 等数据库不建议放在 K8s 里面,就目前行业的程度来说这种存有业务数据比较危险的存储应用没有一个很成熟的管理体系来做,就目前的程度来说还不够成熟提前构建对应实例,并通过 external 类型的 svc 来指向对应实例

数据初始化脚本: https://github.comlwonderflow/gin-vue-admin/blob/master/server/db/qmplus.sql

Mysql:变成 eternal name 类型的 service,然后还叫 mysql,然后,内容实际上是指向一个现有的 mysql 实例

Redis在这里面基本上处于一个缓存的状态,所以保留它原来的样子。

Web-server这个部分主要改革就是对应的数据库的这些参数,其他部分,基本没有动弹。

使用Kubectl apply,先将Mysql apply处理,得到一个servers,然后把Redis apply处理,得到另一个servers以及一的deploy。之后把Web-server apply处理,得到一的svc,此时的svc还处于pending状态,即在等到一个external-ip,等待之后得到一个external-ip,之后到登录页看该应用是否正常即可。

(2) 应用的部署与之前保持一致

$ k apply -f https://raw.githubusercontent.com/wonderflow/gin-vue-admin/master/k8s/web-server.yaml


三、应用-资源声明

资源的声明是什么。

  • 很多学员在使用 K8S 的时候,想做到更高的资源率的目标,但讲师优先保证系

统的稳定性。问题QS 是 QS 里面本身的一个服务等级的保障等级的一个描述当 request 小于 limit,或者不设置的时,QS 等级是 Burstable

只有 request limit 全设置等级才是 Guaranteed。然后,对应的 Pod 来说,当你的 Container 全都Guaranteed 的时候,Pod 等级才是 Guaranteed,如果说,其中有两个都是 Burstable,Pod 等级是 best effort,其他的,这个 POD 等级都是 boss 的。等级生效就是当业务高峰来的时候,POD 的压力就会变大的,,POD 压力变大, node 的压力就会变大, 压力变大的时候,node 就会按照从上到下的设计去驱逐POD。

  • 如果核心应用不设置requestlimit,等级会变成Burstable,当业务高峰来

时,就可能第一个时间被驱逐掉

  • 驱逐:把这个POD原理进行重启。
  • 重启相当于在业务高峰期的时候,把核心重启一次,本身服务的压力变得更

大。

  • 建议在刚开始的时候,对这些应用不太熟悉的时候,把request limit全都设置

起来,而且要设置成request等于limit,这样可以把POD等级推Guaranteed类型。这种类级别,基本上是不会被取掉达到一个稳定运行的这个状态

  • 一段时间,对运行的业务、程序熟悉了,可以非核心业务,设置

request limit一些差异,进行一些超慢,进而拿到整个集群高资源使用率等这个实际上就是对应的自然生命的一种方式。


四、应用-优雅上下线

1. 为什么在容器时代更重要?

  • 更多的弹性:云原生就是要充分发挥云的弹性。实际上要做到尽可能多的,随

着业务的峰值和谷值,对 photoshop 进行分解,这样就带来了更多的 pod 的增删。

  • 声明式的 API比如声明需要三个副本,副本数高于这个会减少这个会

加,这个过程都是自动化的。如果说上下限不优雅的话,每一个 pod 的牺牲和消亡过程中,都会对用户造成影响,在容器这个时间,会放大这个效果。

2. 优雅上线分为优雅上线,优雅下线

  • 优雅上线Liveness 即失败重启和 readiness 即失败摘除服务。
  • 优雅下线: 服务端负载均衡和客户端负载均衡两部分

image.png

服务端负载均衡类似于 K8s svc 模式:当一个 pod 正在运行的时候收到要pod 销毁的这个消息,接收消息之后。会先从对应 service 的 end point 列表里面,把这个 point 对应 endpoint 摘除,然后,把这个信息同步到所有的kubeproxy 里面去。就不会有新的流量,再往这一台 pod 上进行转发。之后,把pod 之前进入的流量处理完成。

客户端负载均衡类似于 dubbo、springcloud 模式:收到一个 pop 要销毁的消息时,大部分的动作需要手动来完成首先要服务注销,也就是反注册。我先从 K8s double 的体系里,把本身的 pod 对应的IP摘掉,阻止新流量进来之后把现有的流量优雅地执行完之后,做一个 Q 的信号,把这个 code 真正的销毁掉。

3.非优雅下线

  • 注释掉优雅上下线的配置

kubectl apply -f web-server.yaml

kubectl get svc

k scale --replicas 3 deployment web-server

  • 给应用压力

ab -c 2 -n 5000 http://182.92  8888/admin/#/login

  • 在此过程中缩小副本数,模拟下线或者是滚动升级中pod下线的过程

k scale --replicas 1 deployment web-server

  • 压力端断开

实验:

使用力压一遍服务用 ab-C 射程为2-射程5000-,然后,我们的 url,直接是之前的 last year url。

简单的压测每500次打印一下,然后,看到里面没有对personal进行设置。然后,设置 requests limits,把脚本保留注释掉,先压一个非优雅下线

模拟过程,首先,open-class 输入 k scale –replicas 3 depioym,观察效果,同时给压力时,把副本3调到1,给完压力就会立刻断开。

4. 优雅下线

  • 打开优雅上下线的配置

kubectl apply -f web-server.yaml

k scale --replicas 3 deployment web-server

  • 给应用压力

ab -c 2 -n 5000 http://182.92  8888/admi

  • 在此过程中缩小副本数,模拟下线或者是滚动升级中 pod 下线的过程

k scale --replicas 1 deployment web-server

  • 压力端正常压测

打开 perstop 对应的脚本打开并更新,把脚本数设置为3,等待3个 pod 准备完成,压力数值与之前操作一致,把副本3调到1,等待程序执行完成,未观察到突然断开,为进行巩固,把副本数调到3,等待程序结束,输入脚本并设为1,按照之前的步骤重复一遍。即为优雅下线。


五、集群级生产准备介绍

集群级别的生产 ready

微服务体系

日志体系

监控体系

安全体系

弹性体系

  • K8s集群是微服务的,需加入微服务体系,包括你的微服务中心服务的限流降

级等等能力,都需要在微服务体系里面构建。

  • 日志体系需要可以做到收集日志分析日志分析制作高级等等。
  • 监控体系,要从上到下做每一层的监控,然后,要从应用到业务,从数据到入

口,都是要完成的。

  • 安全体系,弹性体系,以及AI相关的体系,都要去完成对应的设计。
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
存储 Kubernetes API
K8S上生产环境后,90%都会遇到这个故障
K8S上生产环境后,90%都会遇到这个故障
30 0
|
5月前
|
Kubernetes Docker 容器
Kubernetes学习笔记-Part.06 Docker安装
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
44 1
|
5月前
|
弹性计算 资源调度 Kubernetes
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
246 3
|
7月前
|
Kubernetes Devops 容器
生产环境实现k8s多集群管理
生产环境实现k8s多集群管理
|
5月前
|
Kubernetes Docker 容器
Kubernetes学习笔记-Part.10 容器回退
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
48 0
|
5月前
|
Kubernetes Linux Docker
Kubernetes学习笔记-Part.09 K8s集群构建
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
301 2
Kubernetes学习笔记-Part.09 K8s集群构建
|
5月前
|
Kubernetes Docker 容器
Kubernetes学习笔记-Part.08 安装k8s环境
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
61 2
|
5月前
|
存储 Kubernetes Cloud Native
Kubernetes学习笔记-Part.07 Harbor搭建
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
59 0
Kubernetes学习笔记-Part.07 Harbor搭建
|
5月前
|
Kubernetes Linux 开发工具
Kubernetes学习笔记-Part.05 基础环境准备
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
43 1
|
5月前
|
Kubernetes Linux Docker
Kubernetes学习笔记-Part.04 资源规划
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
55 1

推荐镜像

更多