我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境

首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境。如下图所示

在该架构中,我们可以将其分为四层,如下:

  • Client层:即Kubernetes集群外部用户、客户端等;
  • 服务访问层:即由Traefik ingress实现服务发现、负载均衡和路由规则定义等;
  • 业务应用层:即基于Kubernetes平台构建和运行企业业务应用,如CI/CD持续集成、微服务项目、监控告警和日志管理、私有镜像仓库等服务;
  • 基础设施层:即由Kubernetes容器管理平台和Ceph数据持久化存储等系统组成的基础设施服务。

下面,我们分别来谈谈各层的具体实现方案。

基础设施层

Kubernetes平台

  • 部署管理:Kubernetes平台除了直接使用公有云如阿里云、AWS等云服务提供商的K8s服务外,我们还可以自己部署和管理等,如使用Kubespray工具。
  • 网络通信:在容器和容器之间、容器和主机网络方面,可以使用Calico或Flannel等方案。
  • HA高可用:Kubernetes节点分为Master和Node两种类型节点,前者负责运行集群相关的控制管理服务,而后者负责运行Pod容器。在多Node节点模式下,由于Kubernetes Pod具有天然的容灾冗余HA高可用实现,因此,我们并不需要关心Node节点的HA高可用,而只需关心Master节点的HA即可,Master节点的HA高可用,通过多Master节点+HAProxy方案实现即可。从Kubernetes 1.12版本起,kube-proxy服务默认使用ipvs实现,取消了之前的iptables。这有助于提升K8s大规模集群环境下的性能和稳定性。
  • Docker和操作系统优化:在生产环境中,Docker和操作系统版本应当使用较新的release版本。并且,主机操作系统应当做一定程度的优化配置,如关闭swap内存交换分区,预留一定的CPU核数和内存资源给宿主机使用等。

Ceph/NFS数据存储

Kubernetes平台的数据持久化存储,可以使用Ceph、NFS等存储方案。其中,Ceph适用于有其技术背景或大容量存储需求的公司;而NFS适用于存储容量需求相对较小,无专业存储技术背景的公司。

业务应用层

  • 镜像管理:使用Harbor私有镜像仓库服务;
  • 日志管理:使用Elasticsearch、Filebeat 和 Kibana技术栈;
  • 监控告警管理:使用Cadvisor、Prometheus和Grafana技术栈;
  • 微服务架构:使用Service Mesh服务网格中的Istio方案;
  • Devops:使用Gitlab、Jenkins等持续集成工具;
  • 单体应用:无状态类服务使用deployment,有状态类服务则使用Statefulset,如果关联的服务较多且复杂则使用Helm。
  • 规划好Namespace:应当做到每个namespace专属用于某类型的应用,如monitor namespace统一管理诸如监控告警和日志管理方面的pod、service、pvc、ingress等资源。这样,可以较为方便的管理和区分K8s上的各种应用。

服务访问层

外部客户端访问K8s集群内的服务、负载均衡和路由规则定义使用Traefik Ingress实现。此外,应当实现Ingress服务HA高可用,可以想象在K8s集群中,大量的出入口流量都进过Ingress,其负载是非常大的,其重要程度不言而喻,因此实现HA就非常重要。ingress controller节点(无论是基于nginx还是traefik实现)应当至少为2个节点,并在这些节点上,部署Keepalived和HAproxy共同维护一个VIP地址,将其提供给ingress使用。

架构如下图所示

在该架构中,Ingress节点一般使用独立的服务器,即只做将集群外部流量接入到集群内部。除了使用external Ip来暴露ingress的Service到集群外部,还可以使用hostNetwork,如果是公有云,还可以使用LoadBalance。这样Ingress Controller将监听节点的80和443端口,通过热备的形式部署多个ingress节点,并在每个节点上部署Keepalived,多个节点共同维护一个VIP,实现Ingress服务的高可用。

如上图所示,部署两个ingress节点172.16.10.11和172.16.10.12。公网ip映射或转发到内网的VIP地址172.16.10.10上(如果VIP本身是公网IP则可以不用转发)。ingress controller的副本数replicaCount为2,将被调度到node1和node2这两个节点上。同时,使用pod反亲和性禁止ingress pod调度在同一个节点上。

原文地址:https://www.cnblogs.com/xiexun/p/12116669.html

时间: 2024-09-30 00:18:50

我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境的相关文章

CentOS下Kubernetes集群架设(一)主机环境预设

虽然有Rancher OS和CoreOS这类的发行版,但Kubernetes集群的安装也不是太麻烦,因此,还是先从最基本的实验下.以下是本人CentOS7.6上安装Kubernetes集群的笔记,并且分章节记录,持续更新.... Kubernetes主机环境预设 Kubernete集群的主机生产环境也有多种选择,如下: 方案一: 三台或者五台 Master 节点,分别安装全角色:ETCD , Control Plane :其他节点为容器计算机节点,分别安装角色: worker: 方案二: 三台节

柯南君:看大数据时代下的IT架构(4)消息队列之RabbitMQ--案例(Helloword起航)

一.回顾 让我们回顾一下,在上几章里都讲了什么?总结如下: <柯南君:看大数据时代下的IT架构(1)业界消息队列对比> <柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍> <柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装.配置与监控> 二.起航 本章节,柯南君将从几个层面,用官网例子讲解一下RabbitMQ的实操经典程序案例,让大家重新回到经典"Hello world!"(The simpl

aps - (Advanced Planning And Scheduling)高级生产计划软件的架构和设计

aps - (Advanced Planning And Scheduling) 高级生产计划软件的架构和设计 3 主资源和副资源 主资源简单的说就是某道工序在什么机器或生产线上生产,一般来说,一台机器可以用于生产多个产品,但一个产品也可以在多个机器上生产,比如车间有自动化生产线,半自动化生产线,都可以用来生产某个产品 如果好几类机器都可以加工某道工序,这就涉及到多主资源的选择,一般的企业对多主资源的选择有自己的要求,比如尽量使用半自动机器,安排不下再使用自动机器或相反,或者不管安排到那类机器,

ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地订阅来自于某个渠道的事件消息,并对接收到的消息进行处理,于此同时,它还能够向该渠道发送事件消息,以便订阅该事件消息的消费者能够对消息数据做进一步处理.让我们回顾一下微服务之间通信的几种方式,分为同步和异步两种.同步通信最常见的就是RESTful API,而且非常简单轻量,一个Request/Resp

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

1. 安装规划 1.1 部署节点说明 etcd集群规划 etcd 中心集群 192.168.2.247192.168.2.248192.168.2.249 etcd 事件集群 192.168.2.250192.168.2.251192.168.2.252 Kubernetes master节点集群规划 192.168.3.10192.168.3.11192.168.3.12192.168.3.13192.168.3.14 Kubernetes master vip 192.168.4.1192.

Kubernetes K8s架构师实战集训营

Kubernetes K8s架构师实战集训营 https://pan.baidu.com/s/1ZSHbOurKhvVLu15Q_fNI9Q Kubernetes K8s架构师实战集训营 https://pan.baidu.com/s/1ZSHbOurKhvVLu15Q_fNI9Q ├─第 1 章:Ansible 自动化部署 K8S 集群 01-Ansible 概述,基本使用.mp4 02-7个常用模块基本使用.mp4 03-Playbook 基本使用-A.mp4 03-Playbook 基本使

从零开始入门 K8s | Kubernetes 存储架构及插件使用

本文整理自<CNCF x Alibaba 云原生技术公开课>第 21 讲. 导读:容器存储是 Kubernetes 系统中提供数据持久化的基础组件,是实现有状态服务的重要保证.Kubernetes 默认提供了主流的存储卷接入方案(In-Tree),同时也提供了插件机制(Out-Of-Tree),允许其他类型的存储服务接入 Kubernetes 系统服务.本文将从 Kubernetes 存储架构.存储插件原理.实现等方面进行讲解,希望大家有所收获. 一.Kubernetes 存储体系架构 引例:

柯南君:看大数据时代下的IT架构(5)消息队列之RabbitMQ--案例(Work Queues起航)

一.回顾 让我们回顾一下,在上几章里都讲了什么?总结如下: <柯南君:看大数据时代下的IT架构(1)业界消息队列对比> <柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍> <柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装.配置与监控> <柯南君:看大数据时代下的IT架构(4)消息队列之RabbitMQ--案例(Helloword起航)> 二.Work Queues(using the Java Cl

Android4.2.2下Stagefright多媒体架构中的A31的OMX插件和Codec组件

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email: [email protected] 在前面的博文中提到,AwesomePlayer::onPrepareAsyncEvent()开始进行Codec解码器组件的获取以及创建,这里和大家分享. 1.以解码器实例作为切入点 status_t AwesomePlayer::initVideoDecoder(uint32_t flags) { ATRACE_CALL(); ...... ALOG