Kubernetes 介绍
什么是Kubernetes?
Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制/多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。同时kubernetes提供了完善的管理工具,这些工具覆盖了包括开发、测试部署、运维监控在内的各个环节;因此kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台
Kubernetes 架构图
Kubernetes 基础服务简介
在这里我们只是简单的介绍一下Kubernetes基础组件,后面文章会有详细介绍!
Kubernetes Service介绍
Service(服务)是分布式集群架构的核心,一个Server 对象拥有如下关键特征
(1) 拥有一个唯一指定的名字(比如mysql-server) (2) 拥有一个虚拟IP (Cluster IP、Service IP或VIP)和端口号 (3) 能够提供某种远程服务能力 (4) 被映射到了提供这种服务能力的一组容器应用上
Service的服务进程目前都基于Socker通信方式对外提供服务,比如redis、memcache、MySQL、Web Server,或者是实现了某个具体业务的一个特定的TCP Server进程。虽然一个Service通常由多个相关的服务进程来提供服务,每个服务进程都有一个独立的Endpoint(IP+Port)访问点,但Kubernetes 能够让我们通过Service虚拟Cluster IP+Service Port
连接到指定的Service上。有了Kubernetes内建的透明负载均衡和故障恢复机制,不管后端有多少服务进程,也不管某个服务进程是否会由于发生故障而重新部署到其他机器,都不会影响到我们对服务的正常调用。更重要的是这个Service本身一旦创建就不再变化,这意味着Kubernetes集群中,我们再也不用为了服务的IP地址变来变去的问题而头疼。
Kubernetes Pod介绍
Pod概念 Pod运行在一个我们称之为节点Node
的环境中,可以是私有云也可以是公有云的虚拟机或者物理机,通常在一个节点上运行几百个Pod
;其次,每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和Volume挂载卷,因此他们之间的通讯和数据交换更为高效。在设计时我们可以充分利用这一特征将一组密切相关的服务进程放入同一个Pod中。
并不是每个Pod和它里面运行的容器都能映射
到一个Service 上,只有那些提供服务(无论是对内还是对外)的一组Pod才会被映射成一个服务。
Service 和Pod如何关联
容器提供了强大的隔离功能,所以有必要把为Service提供服务的这组进程放入到容器中隔离。Kubernetes设计了Pod对象,将每个服务进程包装到相应的Pod中,使其成为Pod中运行的一个容器Container
。为了建立Service 和Pod间的关联关系,Kubernetes 首先给每个Pod填上了一个标签Label
,给运行MySQL的Pod贴上name=mysql
标签,给运行PHP的Pod贴上name=php标签,然后给相应的Service定义标签选择器Label Selector
,比如MySQL Service的标签选择器的选择条件为name=mysql
,意为该Service 要作用于所有包含name=mysql Label
的Pod上。这样就巧妙的解决了Service和Pod关联问题
Kubernetes RC介绍
RC介绍 在Kubernetes集群中,你只需要为需要扩容的Service关联的Pod创建一个RC Replication Controller
则该Service的扩容以至于后来的Service升级等头疼问题都可以迎刃而解。 定义一个RC文件包括以下3个关键点
- (1) 目标Pod的定义
- (2) 目标Pod需要运行的副本数量(Replicas)
- (3) 要监控的目标Pod的标签(Label)
在创建好RC系统自动创建好Pod
后,kubernetes会通过RC中定义的Label筛选出对应的Pod实力并实时监控其状态和数量,如果实例数量少于定义的副本数量Replicas
,则会用RC中定义的Pod模板来创建一个新的Pod,然后将此Pod调度到合适的Node上运行,直到Pod实例的数量达到预定目标。这个过程完全是自动化的,无需人干预。只要修改RC中的副本数量即可。
Kubernetes Master介绍
Master介绍 Kubernetes 里的Master指的是集群控制节点,每个Kubernetes集群里需要有一个Master节点来负责整个集群的管理和控制,基本上Kubernetes所有的控制命令都发给它,它负责具体的执行过程,我们后面执行的所有命令基本上都是在Master节点上运行的。如果Master宕机或不可用,那么集群内容器的管理都将失效
Master节点上运行着以下一组关键进程:
- [ ] Kubernetes API Server (kube-apiserver):提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程
- [ ] Kubernetes Controller Manager (kube-controller-manager):Kubernetes里所有的资源对象的自动化控制中心
- [ ] Kubernetes Scheduler (kube-scheduler):负责资源调度(Pod调度)的进程
另外在Master节点上还需要启动一个etcd
服务,因为Kubernetes里的所有资源对象的数据全部是保存在etcd
中
Kubernetes Node介绍
Node介绍 除了Master,集群中其他机器被称为Node节点,每个Node都会被Master分配一些工作负载Docker容器
,当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上去。
每个Node节点上都运行着以下一组关键进程。
- [x] kubelet:负责Pod对应容器的创建、停止等任务,同时与Master节点密切协作,实现集群管理的基本功能
- [x] kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件。
- [x] Docker Engine(Docker):Docker引擎,负责本机的容器创建和管理工作。
Kubernetes 中Master与Node工作内容
在集群管理方面,Kubernets将集群中的机器划分为一个Master节点和一群工作节点(Node),其中,在Master节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性收缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的kubelet、kube-proxy服务进程,这些服务进程负责Pod创建、启动、监控、重启、销毁、以及实现软件模式的负载均衡
Kubernetes 介绍相关推荐
- kubernetes 介绍_Kubernetes的友好介绍
kubernetes 介绍 Kubernetes is one of the most exciting technologies in the world of DevOps these days. ...
- Kubernetes介绍
一. k8s的介绍 [1]什么是Kubernetes Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. Kubernetes的名字来自希 ...
- day95-容器编排-kubernetes介绍与安装部署
kubernetes 一.容器编排工具 docker machine docker compose docker swarm docker service docker stack kubernete ...
- Docker学习总结(19)——Google开源的容器集群管理系统Kubernetes介绍
Kubernetes是Google开源的容器集群管理系统.它构建Ddocker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-Pa ...
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...
- Kubernetes入门一:介绍及环境准备
Kubernetes学习笔记 本节主要介绍: Kubernetes的一些基础知识 Kubernetes集群搭建的相关操作内容 前言 1. 部署的演变过程: 整个部署的演变过程如图所示: 传统部署时代: ...
- kubernetes布署方式介绍
系列文章目录 Kubernetes介绍 文章目录 系列文章目录 前言 kubenetes集如布署方式 一.kubeadm 二.二进制包 三.minikube方式布署 四.kind方式布署 五.yum安 ...
- k8s入门系列之介绍篇
Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是k ...
- Docker集群管理工具-Kubernetes部署记录
Kubernetes介绍 Kubernetes是Google开源的容器集群管理系统,是基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件. Kubernet ...
- Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程
早在 Docker 正式发布几个月的时候,LeanCloud 就开始在生产环境大规模使用 Docker,在过去几年里 Docker 的技术栈支撑了我们主要的后端架构.这是一篇写给程序员的 Docker ...
最新文章
- 性能优化之数据库优化
- 中国氨纶市场“十四五”规划及未来动态分析报告2021年版
- Linq中的Where与SkipWhile
- oracle按时间导出,如何为Oracle导出文件加上时间戳
- 利用workerman+html开发简单的在线五子棋对战
- 《高性能JavaScript》第八章 编程实践
- 棋牌游戏服务器架构: 详细设计(一) 内核设计
- 链表的基本操作 java_详细实现单链表的基本操作【Java版】
- mysql5.7主从全备恢复_Mysql5.7—运维常用备份方式(超全)
- java适配器模式_适配器模式的设计,你get到了吗?
- 95-090-022-源码-bin脚本-CLI提交Job的时候加载插件
- 嵌入式编程(二):ARM单片机如何将函数 定义到指定程序地址
- Active Format Description (AFD)简介
- debian7系统设置固定IP
- 条形码生成软件如何制作A级条码
- 如何让jar包显示Java图标
- 微信小程序-如何处理时间戳
- vue 中deep使用
- 房屋装修选择自装,如何寻找砌墙工人,比价并施工(砌墙阶段)
- 国产服务器的安全监控之法