Kubernetes介绍

简介: Docker系列文章:1. 为什么要学习Docker2. Docker基本概念3. Docker镜像基本原理4. Docker容器数据卷5. Dockerfile6. Docker单机网络上7. Docker单机网络下8. Docker单机网络实战9. Docker隔离技术10. Docker限制11. Docker Compose

一、前言


从本周开始以后尝试开始每周两更,本篇原计划是Docker多机网路,该篇文章有些卡文,所以先更新篇Kubernetes文章,关于Docker系列文章后面应该就剩下两篇了,等后续Kubernetes使用篇讲完以后,再开始做一些Docker相关深层次思考。

Docker系列文章:
  1. 为什么要学习Docker
  2. Docker基本概念
  3. Docker镜像基本原理
  4. Docker容器数据卷
  5. Dockerfile
  6. Docker单机网络上
  7. Docker单机网络下
  8. Docker单机网络实战
  9. Docker隔离技术
  10. Docker限制
  11. Docker Compose


二、什么是Kubernetes


Kubernetes是谷歌十几年来大规模容器实践的成果,是谷歌Brog的开源版本。Google 每周会启用超过 20 亿个容器——全都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,汲取了Brog的经验和教训,所以Kubernetes以开源,就迅速称霸容器领域。

Kubernetes是一个全新基于容器技术的分布式架构方案,它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,您可以将运行容器的多组主机聚集在一起,由 Kubernetes 帮助您轻松高效地管理这些集群。而且,这些集群可跨公共云、私有云或混合云部署主机。因此,对于要求快速扩展的云原生应用而言,Kubernetes 是优秀的托管平台。

Kubernetes是一个开放平台,它不局限于任何语言,不限制任何编程接口。无论用啥语言编写的服务,都可以被映射为Kubernetes的服务,并且通过标准的TCP通信协议进行交互。Kubernetes是一种更高层次的抽象,对编程的语言、框架、中间件没有任何浸入,现有的系统和平台很容器可以迁移到Kubernetes平台上。

Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完善的集群管理能力,包含服务的注册、服务发现、负责均衡、故障发现、服务滚动升级、在线扩容以及多粒度的资源配额管理等。同时Kubernetes提供的完善的管理工具,这些工具覆盖了整个软件生命周期。

总结一下,Kubernetes是一个具有优秀背景的、全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台。


三、Kubernetes核心概念介绍


Kubernetes的总架构图

img

Kubernetes核心组件介绍

Master
kube-apiserver

kube-apiserver 是 Kubernetes 最重要的核心组件之一,kube-apiserver在Kubernetes 集群中扮演着通信枢纽的角色。kube-apiserver不仅负责和 etcd 交互,并切对外提供统一的API调用入口, 所有的交互都是kube-apiserver为核心的, kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制等功能;

kube-controller-manager

kube-controller-manager 是Kubernetes 集群的大总管,负责集群内 Node、Namespace、Service、Token、Replication 等资源对象的管理,使集群内的资源对象维持在预期的工作状态。每一个 Controller 通过kube-apiserver提供的 Restful 接口实时监控集群内每个资源对象的状态,当发生故障,导致资源对象的工作状态发生变化,就进行干预,尝试将资源对象从当前状态恢复为预期的工作状态。常见的 Controller 有 Namespace Controller、Node Controller、Service Controller、ServiceAccount Controller、Token Controller、ResourceQuote Controller、Replication Controller等。

kube-scheduler

kube-scheduler负责对集群内部的资源进行调度,相当于“调度室”。接收来自kube-apiserver创建Pods的任务,收到任务后它会检索出所有符合该Pod要求的Node节点(通过预选策略和优选策略),开始执行Pod调度逻辑。调度成功后将Pod绑定到目标节点上。

Etcd

Etcd在Kubernetes中是用来存放数据并通知变动的,Kubernetes中把关键数据都存放在Etcd中,在Kubernetes中,数据是随时发生变化的,比如说用户提交了新任务、增加了新的Node、容器死掉了等等,都会触发状态数据的变更。状态数据变更之后,Master上的kube-scheduler和kube-controller-manager,就会重新发起变更,这些变化,都需要及时地通知给每个组件。Etcd有一个特征,可以在调用它的api中,监听api的数据,一旦数据发生变化,就会收到通知。Kubernetes利用这个特征,当节点消失或配置有变动时,Etcd会第一时间发现,就会告知每个订阅过的组件,这个时候发生变化组件可以知道自己应该做什么。对于kube-scheduler和kube-controller-manager只需要把最新的数据写入到Etcd中就可以了,不需要再次去发起调用。

img

Node
kubelet

在Kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器。kubelet会在kube-apiserver上注册节点信息,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源。可以把kubelet理解成Node上的Pod管家。

kube-proxy

在Kubernetes集群中,每个Node节点上都会部署kube-proxy,kube-proxy 会作为守护进程跑在每个节点上通过监听着Etcd中关于Pod的最新状态,一旦检查到一个Pod资源发生变动,kube-proxy 就立即将这些变动,反应在iptables 或 ipvs规则中,当后续再有请求发到Service时,Service可以通过ipvs最新的规则将请求的分发到Pod上,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟网络转发。

container

在Kubernetes集群中,每个Node节点都会存在container。container负责本机容器的管理和创建,目前最常采用的就是Docker。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 Kubernetes 负载均衡
Kubernetes介绍篇:是什么?为什么要用?
是时候该学习Kubernetes了,不然都不敢说自己了解容器、了解Docker。
1126 0
Kubernetes介绍篇:是什么?为什么要用?
|
3月前
|
Kubernetes 监控 关系型数据库
了解Kubernetes
kubernetes入门
21 0
|
3月前
|
Kubernetes 负载均衡 应用服务中间件
Kubernetes
Kubernetes 版 ACK(Alibaba Cloud Container Service for Kubernetes)是阿里云提供的一种容器服务,它基于 Kubernetes 开源容器编排平台,为用户提供高效、可扩展的容器应用管理能力。ACK 可以帮助用户在云端轻松部署、管理和扩展容器化应用,同时提供了丰富的 Kubernetes 功能,例如自动扩展、滚动更新、负载均衡等。
35 1
|
8月前
|
Kubernetes 容器
Kubernetes的ExternalName详解
ExternalName类型的Service在Kubernetes中用于将外部服务(不是Kubernetes集群内的服务)映射到Kubernetes集群内的Service。 # 样例 其创建方法如下: ``` kind: Service apiVersion: v1 metadata: name: my-external-service namespace: cv-console-dev labels: app: my-external-service annotations: kubesphere.io/creator: sunjq kubesph
168 0
|
8月前
|
Kubernetes 调度 Docker
了解和使用 Kubernetes
通过 [《容器集群管理工具 Docker Swarm》](https://wangbinguang.blog.csdn.net/article/details/131082281)可以知道,在部署、调度、扩展和管理较多的容器时,如果有一个工具帮忙做这些事,那无疑会大大提高工作效率了。那 Docker Swarm 就是这样的工具,同样 Kubernetes(简称k8s)也是这样的一个工具,相对于 Docker Swarm, Kubernetes 生态比较庞大,有更多的支持、服务和工具。至于用哪个,萝卜青菜各有所爱吧。
69 0
|
9月前
|
运维 Kubernetes 安全
Kubernetes 之 Egress 思考
“网络周边安全”是任何一个企业运维团队所必须关注的重点。当我们谈到网络界面控制时,我们往往潜意识地先会想到入站安全(入口)。然而,基于流量的运作,例如,何时可以离开网络(出口)以及流向哪里同样至关重要。在这篇文章中,我们将不深入讨论为什么控制出口流量如此重要的理论细节,毕竟,前人已经说的口都干了。因此,本文仅从技术演进层面来探讨关于在云原生生态中“出口”的选型及实现场景。
97 0
|
Kubernetes 容器
什么是 Kubernetes
什么是 Kubernetes
131 0
|
边缘计算 运维 Kubernetes
Kubernetes 伟大的未来
Kubernetes 伟大的未来
201 1
|
存储 Kubernetes 负载均衡
1. 开始Kubernetes: k8s
目录内容: 1. 发展经历 2. 知识图谱 3. 组件说明 本节目标: 要求会画bolg系统和kubernetes系统的架构图, 并且知道架构每一部分的作用.
203 0
1. 开始Kubernetes: k8s
|
存储 人工智能 资源调度
关于kubernetes我们还有什么可做的?
kubernetes在容器编排大战中由于应用的可移植性以及支持混合云/多云部署方式上的灵活性。加上开放可扩展的理念,使得周边社区非常活跃。从既有调研结果看,kubernetes已成为容器编排领域的标准。但是它并不成熟,很多方面都大有可为,下面就是列举了一些方面: