【DevOps】Kubernetes 理论与实践大纲

Kubernetes 理论与实践大纲

理论基础

DevOps

SRE

云原生

1、背景
2、目的
3、价值体现
4、特性

5、要素

容器化:所有的服务都必须部署在容器中。

微服务:Web 服务架构是微服务架构

CI/CD:可持续交互和可持续部署

DevOps:开发和运维密不可分

6、相关技术
7、整体架构
8、实现路径

微服务

https://www.kubernetes.org.cn/9711.html

服务架构是一种灵活的架构,可以显著性地提高应用程序灵活性、可扩展性等。

基于微服务的架构通常有几个独立的单元,它们协同工作以接收和处理各种请求。这个复杂的某些部分可以是插件,这意味着在需要的情况下,你可以在不干扰应用程序的整体工作情况下, 新增一个新插件或删除一个插件。

关注点:实现一个微服务架构,你应该熟悉应用程序生命周期中的各种关注点,如持久化、日志记录、监控、负载均衡、缓存等,此外你还应该知道哪些哪些工具比较好或哪些堆栈更适合你的应用程序。

1、关注点

Docker:docker

容器编排:Kubernetes ,Docker Swarm

Docker容器管理:Portainer , DockStation, Kitematic,Rancher

CICD:Gitlab、Github、Gitee、jenkins、jenkinsx

API网关:Kong,Ocelot

负载均衡:Traefik , NGINX,Seesaw

服务发现:Consul,Zookeeper,Eureka,etcd和Keepalived

事件总线:同步通信(HTTP or GRPC)和异步通信(RabbitMQ,Kafka)

日志记录:Elastic Logstash

监控和警报:Prometheus , Kibana,Graphana

分布式追踪:OpenTelemetry , Jeager,Zipkin

数据持久化:PostgreSQL, MySQL, SQL SERVRE, Oracle, MongoDB, Cassandra,Elasticsearch

缓存:Redis (Remote Dictionary Server), Apache Ignite,Hazelcast IMDG


云供应商:Amazon Web Services (AWS), Microsoft Azure, Google Cloud,Alibaba Cloud

istio

实践环境

机房:世纪互联机房、瑞德机房;

系统:centos7.9

实践方案与工作内容

构建镜像体系

1、基础镜像(java、python、java+python、java + C++)

2、服务镜像 (Redis、Kafka、selenium+python、NodeJs、Tomcat)

3、应用镜像(爬虫、下载、文本分析、补信息、特征提取、特征比对)

优化镜像层级结构及镜像大小(镜像瘦身)

1、多级构建

2、dockerfile优化(比如 yum install 的缓存要删除)

构建镜像仓库

自建私有镜像仓库 Harbor,做好镜像仓库分类工作

业务容器化

1、制作应用镜像

2、编辑 ignore 文件,屏蔽不需要打包的文件

开发 CI/CD的环境和流程

1、自建代码仓库 Gitlab

2、使用 gitlab-ci 作为 CI/CD 方案,备选(jenkinx-x)

3、两个机房分别部署 gitlab-runner

容器与应用编排(k8s)

1、安装与配置 docker

2、搭建 kubernetes

在两个机房分别搭建 kubernetes,190和13114机器作为 master

自动完成服务的部署、更新、卸载和扩容、缩容

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

3、面板

使用 k8s 面板,可视化直观的管理监控应用与服务器的情况,可选的有:
Kubesphere、Rancher 、 kuboard 、 dashboard 、 Prometheus 、 lens 、k9s

k8s 安全性

https://www.kubernetes.org.cn/9678.html

1、使用基于角色的访问控制 (RBAC)
2、 Secret
3、 Kubernetes API 使用私有端点

监控与预警

1、Prometheus + Grafana

监控服务器、mysql、kafka、redis、接口、应用、数据情况

预警机制

k8s 命名空间

1、按项目

2、按人

3、按环境(development、production)

分布式存储

1、分布式对象存储(ceph or Minio)

命名规范(看重)

1、dockerfile

2、kubernetes

3、项目结构

周边技能

1、ansible
2、git

开发人员需要技能

1、编写dockerfile
2、编写 gitlab-ci.yml
3、编写 k8s的yml
4、有git环境,发布时使用 git push

证书过期问题

k8s安全性研究

实践流程


一个k8s 应用的结构

project-name
    ProjectName
    dockerfile
    .gitlab-ci.yml
    k8s-dpl.yaml

标签体系

app:{appid}:[应用名称]
env:{dev/demo}:[应用环境]
version:{rt218}:[应用版本]

可记录性探讨


业务与开发文档:语雀

脚本与临时业务记录:tmux + tmuxp

CICD方式记录:.gitlab-ci.yml

开发环境记录:dockerfile

部署方式记录:heml(charm.yml)、kubernetes.yaml、service.yaml、Ingress.yaml

谈谈通用技术


API技术
前端技术
架构
docker
k8s
监控预警技术
存储技术(中间件、数据库、分布式对象存储)
linux技术

你可能感兴趣的:(【DevOps】,python,kubernetes,k8s)