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。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
11月前
|
存储 Kubernetes 调度
|
存储 Kubernetes 微服务
kubernetes简介-这是一篇学习k8s必看的文章
kubernetes简介-这是一篇学习k8s必看的文章
|
Linux Docker 容器
怎么安装Docker
Docker操作 (二)
246 70
|
10月前
|
人工智能 分布式计算 DataWorks
大数据& AI 产品月刊【2024年11月】
大数据& AI 产品技术月刊【2024年11月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
12月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
188 5
|
12月前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
126 4
|
12月前
|
Kubernetes Docker 容器
rancher docker k8s安装(一)
rancher docker k8s安装(一)
111 2
|
12月前
|
开发者 Docker 微服务
利用Docker Compose优化微服务架构
在微服务架构中,Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,通过YAML文件配置服务、网络和卷,实现一键创建和启动。这不仅确保了开发、测试和生产环境的一致性,还简化了团队协作和维护工作,大幅提升了开发效率。本文将详细介绍Doker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化微服务架构。
|
关系型数据库 MySQL Java
腾讯云服务器的使用、服务器中使用Docker安装常见的软件、如何将一个项目发布到服务器
这篇文章介绍了在腾讯云服务器上使用Docker安装常见软件的过程,包括安装MySQL、Redis和Tomcat,并提供了解决连接问题的方法。同时,还涉及了服务器中安装JDK 1.8的步骤和如何将项目打包部署到服务器上的指导,包括注意事项和操作提示。
腾讯云服务器的使用、服务器中使用Docker安装常见的软件、如何将一个项目发布到服务器
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
334 20