【Kubernetes实践指南】Kubernetes架构介绍

简介: 2019年是互联网寒冬几乎成为不争的事实,在寒冬下,往往会暴露出很多被掩盖的事实。

作为运维工程师,坚持学习才是寒冬中的生存之道。Kubernetes的浪潮已经来了,不管我们是否愿意,生产中是否使用,Kubernetes已经不知不觉成为运维必备技能。本文介绍Kubernetes架构,作为入门的第一篇文章。


Kubernetes介绍

Kubernetes源于希腊语,意为“舵手”或“飞行员”,是用于自动部署,扩展和管理容器化应用程序的开源系统,由于K和S之间有8个字母,被简称为K8S。

Kubernetes构建在Google 15年生产环境经验基础之上,可以将Kubernetes看作为Google内部的容器管理平台Borg和Omega的开源版本,当然他们之间是有一些差异的。


Kubernetes系统架构

Kubernetes被设计为Master和Node两个角色,Master为控制节点,Node为计算节点或者叫工作节点,在Master节点上有一个API Server服务,对外提供标准的RestAPI,这也是Kubernetes集群的入口,意外着只要和集群进行交互必须连接到API Server上。


92.png


Master节点介绍


Kubernetes Master节点主要有4个组件,API Server、Scheduler、Controller、etcd。如下图所示:


93.png

  • API Server:提供Kubernetes API接口,主要处理Rest操作以及更新Etcd中的对象。是所有资源增删改查的唯一入口。
  • Scheduler:绑定Pod到Node上,主要做资源调度。
  • Controller Manager:所有其他群集级别的功能,目前由控制器Manager执行。资源对象的自动化控制中心,Kubernetes集群有很多控制器。
  • Etcd:所有持久化的状态信息存储在- Etcd中,这个是Kubernetes集群的数据库。

    Node节点介绍


Node节点是Kubernetes集群的工作节点,在Node节点上主要运行了Docker、Kubelet、kube-proxy三个服务(Fluentd请先忽略),如下图所示:


94.png

  • Docker Engine:负责节点的容器的管理工作,最终创建出来的是一个Docker容器。
  • Kubelet:安装在Node上的代理服务,和API Server进行通信,用来管理Pods以及容器、镜像、Volume等,实现对集群对节点的管理。
  • Kube-proxy:安装在Node上的网络代理服务,提供网络代理以及负载均衡,实现与Service通讯。


Kubernetes逻辑架构


在上面的介绍中提到像Pod、Service这些概念,在Kubernetes的系统架构图中并没有体现出来,这些可以理解为Kubernetes逻辑架构中的组件。也就是在Master和Node上并不具体存在的一个服务或者进程,但却是Kubernetes的组件,也是我们的管理对象。主要有Pod、Service和各种控制器等。 PodPod是Kubernetes的最小管理单元,一个Pod可以包含一组容器和卷。虽然一个Pod里面可以包含一个或者多个容器,但是Pod只有一个IP地址,而且Pod重启后,IP地址会发生变化。

95.png

Controller一个应用如果可以有一个或者多个Pod,就像你给某一个应用做集群,集群中的所有Pod是一模一样的。Kubernetes中有很多控制器可以来管理Pod,例如下图的Replication Controller可以控制Pod的副本数量,从而实现横向扩展。

96.png


Kubernetes中有很多控制器,后面的章节我们会逐步讲到,常用的控制器如下:

  • Replication Controller(新版本已经被ReplicaSet所替代)
  • ReplicaSet(新版本被封装在Deployment中)
  • Deployment:封装了Pod的副本管理、部署更新、回滚、扩容、缩容等功能。
  • DaemonSet:保证所有的Node上有且只有一个Pod在运行。
  • StatefulSet:有状态的应用,为Pod提供唯一的标识,它可以保证部署和scale的顺序。
  • Job:使用Kubernetes运行单一任务。
  • CronJob:使用Kubernetes运行定时任务。
    Service

由于Pod的生命周期是短暂的,而且每次重启Pod的IP地址都会发生变化,而且一个Pod有多个副本,也就是说一个集群中有了多个节点,就需要考虑负载均衡的问题。Kubernetes使用Service来实现Pod的访问,而且Service有一个Cluster IP,通常也称之为VIP,是固定不变的。


97.png


Kubernetes网络介绍

在Kubernetes集群中存在着三种网络,分别是Node网络、Pod网络和Service网络,这几种网络之间的通信需要依靠网络插件,Kubernetes本身并没有提供,社区提供了像Flannel、Calico、Canal等,后面章节会详述。

Node网络

Node网络指的是Kubernetes Node节点本地的网络,在本实验环境中使用的是192.168.56.0/24这个网段,所有的Node和Master在该网段都可以正常通信。

Pod网络

后面创建的Pod,每一个Pod都会有一个IP地址,这个IP地址网络段被称之为Pod网络,如下图所示。

98.png

Service网络


Service是为Pod提供访问和负载均衡的网络地址段,如下图所示。


99.png

Kubernetes的组件和知识绝非如此,快速入门可以先了解这么多,下一章节,我们先快速的部署一个Kubernetes集群。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Kubernetes API 调度
k8s 到底是什么,架构是怎么样的?
Kubernetes(k8s)是Google开源的容器集群管理系统,它通过YAML文件自动化应用部署、扩展和管理。k8s架构包含控制平面(API Server、Scheduler、Controller Manager和etcd)和工作节点(Node,含kubelet、Container runtime、Kube Proxy等)。控制平面负责调度和管理,Node执行任务。kubectl是命令行工具,用于与k8s交互。k8s通过Ingress暴露服务,并通过Pod作为最小调度单位管理容器。Docker通常与k8s结合使用,提供容器化应用,但二者并非同一概念。
64 4
k8s 到底是什么,架构是怎么样的?
|
2月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同
在当今快速迭代和部署应用程序的背景下,微服务架构已成为企业开发的首选模式。此文章通过深入分析Docker容器化技术和Kubernetes集群管理工具,探讨了如何利用这两者协同工作以构建和维护一个高效的微服务系统。我们将剖析Docker和Kubernetes的核心原理,并展示它们如何简化部署流程、提高系统的可伸缩性和可靠性。本文旨在为开发者提供一套实践指南,帮助其在云原生时代下,构建出既灵活又强大的后端服务。
|
5天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
27 1
|
7天前
|
Kubernetes 监控 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【5月更文挑战第4天】在现代软件开发中,微服务架构已成为实现可扩展、灵活且独立部署服务的流行解决方案。本文将探讨如何利用Docker容器化技术和Kubernetes容器编排平台来构建一个高效的微服务系统。我们将分析Docker和Kubernetes的核心优势,并指导读者如何通过这些工具优化微服务部署、管理和扩展过程。文章还将涉及监控和日志管理策略,以确保系统的健壮性和可靠性。
|
11天前
|
Kubernetes 监控 Docker
|
13天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker和Kubernetes在构建微服务架构中的应用
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
17天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第24天】 随着现代软件开发的演变,微服务架构已成为实现可扩展、灵活且容错的系统的首选方法。本文将深入探讨如何利用Docker容器化技术和Kubernetes容器编排平台来构建和维护一个高效的微服务环境。我们将分析Docker和Kubernetes的核心原理,并展示它们如何协同工作以支持服务的部署、管理和自动化扩展。通过实际案例和最佳实践,读者将了解到在设计微服务时如何避免常见的陷阱,并采取策略优化性能和资源利用率。
|
28天前
|
Kubernetes 网络协议 调度
Kubernetes架构与组件
Kubernetes架构与组件
32 0
|
3天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
35 8
|
1天前
|
监控 持续交付 Docker
使用Docker进行微服务架构的最佳实践
【5月更文挑战第10天】本文探讨了使用Docker实施微服务架构的最佳实践。首先,理解微服务架构是拆分小型独立服务的模式,借助Docker实现快速部署、高可移植性和环境一致性。Docker的优势在于服务扩展、容器编排、自动化构建与部署。最佳实践包括:定义清晰服务边界,使用Dockerfile和Docker Compose自动化构建,利用Docker Swarm或Kubernetes编排,实施服务发现和负载均衡,监控与日志记录,以及持续集成和持续部署。Docker虽重要,但需与其他技术结合以确保系统整体稳定性。