基础入门k8s笔记-全-通俗易懂版

目标:云平台多个主机管理容器化应用的平台,目的是通过各种抽象概念,让部署和应用简单高效。

#一,为什么需要k8s

(独立性问题,环境不隔离)传统部署ip不动:java打包成war包-通过tomcat上传到服务器。资源不隔离,比如带宽,cpu,内存等问题会被抢占。

虚拟化部署:占用资源过度,虚拟化本身就占用很多。

容器化部署:(类似包装袋,生命周期大大缩短,例如去超市买菜用的那个包装袋,回家就丢了,不太稳定了)(没有硬件设备的虚拟)容器:像虚拟机一样实现文件系统,网络,cpu,内存,磁盘,进程,用户空间等资源的隔离

#1,k8s的特点

(1)自我修复:有error就直接把容器干掉,重新复制一个容器运行。

(2)弹性伸缩。如果需要4个,也会自己搞两个出来,若又需要2个,改一下也可以自动变为两个。

(3)自动部署和回滚。编写配置文件,他就可以自动部署(比如删除重新部署),可以用户无感知的情况下进行更新升级,或者回退版本。

(4)服务发现和负载均衡。

(5)机密和配置管理。动态配置敏感信息管理啥的可以统一编排。

(6)存储编排。

(7)批处理。

#二,集群架构与组件

相关组件

分层架构:生态系统,接口层,管理层,应用层,核心层。

#三,核心概念和专业术语

#1,服务的分类

#(1)无状态应用

没有存数据。不会对本地环境产生任何依赖,不会存储到本地磁盘和内存(请求过来,做个运算,调用就结束了)高效的扩容和迁移

客户端——>Nginx 反向代理路由转到目标服务—>java应用商城

#(2)有状态应用

存数据,比如redis。和上面相反。需要维护数据存储

#2,资源和对象

资源和对象:可以把资源当成java中的类,对象就是资源的实例

#资源的分类(元数据,集群,命名空间)

#元数据型(对pod的一种描述)

1,Horizontal Pod Autoscaler(HPA):Pod自动扩容:根据cpu的使用量或者自定义指标自动对pod进行扩/缩容。解放运维能力。(应用场景:比如每日早上10点超市鸡蛋秒杀,本来5台服务器,马上10点的时候就会自动扩容变为10台服务器,过去这个时间段就不用占用这么多服务器,就缩容,又变为5台服务器)

  • 控制管理器每隔30秒,会查询metrics的资源使用情况。

  • 支持三种metrics的资源使用情况(预定义metrics以利用率的方式计算,自定义pod metrics ,以原始值的方式计算,自定义的object metrics

  • 支持两种metrics查阅方式:Heapster和自定义的rest api

  • 支持多metrics

2,PodTemplate :pod模板。利用pod模板来创建新的应用

3,LimitRange:对集群里面的资源进行限制。 request(最少用多少资源) limits(最多可以用到多少资源)。相当于批量设置了一个范围(某个命名空间)的pod的资源使用限制。

#集群级

Namespace 命名空间

Node 节点资源。不像其他资源(pod 和 namespace)node 本质上不是k8s来创建的,只是管理node上的资源,虽然可以通过manifest创建一个node对象,但是k8s只是去检查是否真的是有这么一个node 如果检查失败,也不会往上调度pod

ClusterRole(集群角色,集群资源之上的,对集群权限的一个管理,声明了一个权限组,没有把权限应用到哪一个账户之上,没有进行绑定)

ClusterRoleBingding(把哪一个资源跟角色进行绑定,让这个资源拥有角色,就拥有了对应角色的权限,只能绑定到集群级别的资源对象,不能往命名空间资源对象去绑定)

#命名空间级(Pod, 服务发现,配置和存储,特殊类型存储,其他)

pod(副本,控制器)

副本:一个pod可以被复制成多份,每一份可以被称为一个副本,这些副本除了一些描述信息(pod的名称,uid等)不一致以外,其他信息都是一样的,比如pod内部容器,容器数量,容器里面运行的应用等的这些信息都是一样的,这些副本提供同样的功能。

pod的控制器(可以认为是一个pod对象)通常包含一个名为replicas的属性,这个属性则指定了待定pod的副本数量,当前集群中该pod的数量与该属性指定的值不一致时,k8s会采取一些策略去使得当前状态满足配置的要求。

pod:

是k8s中最小的可部署单元,一个pod(容器组)包含了一个应用程序容器(某些情况下是多个容器),存储资源,一个唯一的网络ip,以及一些确定容器该如何运行的选项。pod容器组代表了k8s中一个独立的应用容器运行实例,该实例可能由单个容器或者几个紧耦合在一起的容器组成。

两种使用途径:

一个pod只运行一个容器,此时可认为pod容器组是该容器的wrapper k8s通过pod管理容器,而不是直接管理容器

一个pod中运行多个需要互相协作的容器。可以将多个紧密耦合,共享资源且始终在一起运行的容器编排在同一个pod中

pod 希望当两个容器有强依赖关系时,可以共享网络或者实现容器之间文件系统的共享,做资源限制

pod之间通过pause来实现“共享”

#控制器:(包括适用无状态,有状态服务,守护进程,任务/定时任务)

适用无状态服务(nginx)

ReplicationController RC(已经废除)帮助我们动态更新pod副本数(实现扩容和缩容的效果),在副本也就是replicas 中给参数就可

ReplicaSet RS 帮助我们动态更新pod的副本数,可以通过selector来选择对哪些POD生效

Label和Selector

Deployment 针对RS的更高层次的封装,提供了更丰富的部署相关功能

1,创建Replica Set/pod

2,滚动升级/回滚

3,平滑扩容和缩容

4,暂停与恢复Deployment

适用有状态服务 (一般像redis mysql)(特点,组成,注意事项)

StatefulSet:专门针对有状态服务进行部署的一个控制器

网络固定,数据不能丢失,顺序要得到保证等(通过statefulSet)

特点:(1)稳定的持久化存储(2)稳定的网络标志(3)有序部署,有序扩展(4)有序收缩,有序删除

组成:

(1)Headless Service:针对有状态服务的DNS管理。DNS域名服务,将域名与ip绑定映射关系

(2)volumeClaimTemplate:用于创建持久化卷的模板

注意事项:所有的pod的volume必须使用persistentVolume或者是管理员先创建好。为了保证数据安全,删除statefulSet时不会删除Volume。statefulset需要一个headless service 来定义DNS domain,需要在statefulset 之前创建好。

守护进程(日志收集)

保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志,监控或者其他系统管理应用,典型的应用包括,日志搜集,系统监控,系统程序。

DaemonSet:为每一个匹配的Node都部署一个守护进程。

任务/定时任务

Job 一次性任务,运行完成之后Pod销毁,不再重新启动新容器

CronJob 在job的基础上加上了定时任务。(什么时间做,每隔多久做)

服务发现:service和ingress

Service:集群内部的网络通信,pod不能直接提供给外网访问,利用service来暴露端口,提供服务,中文名就叫服务。

用户-负载均衡服务器-网关-微服务。微服务之间可能存在一些调用关系,这种流量叫横向流量,也叫东西流量。

配置与存储:volume和CSL

Volume数据卷,共享pod中容器使用的数据,用来放持久化的数据比如数据库数据。CSL行业标准接口规范,将任意存储系统暴露给容器化应用程序(作用类似JDBC)

特殊类型配置:configMap和secret和downwardAPI

  • ConfigMap是key value类型的配置,灵活化配置文件。

  • secret比configmap多了加密的功能。默认加密方式是base64,但是这只是一种编码echo “密文“ | base —decode即可解密

  • downwardAPI不是为了存放容器的数据,也不是进行数据交换的,是为了让pod里面的容器直接获取到pod对象本身的一些信息。(将pod的信息直接注入容器内部)两种方式环境变量和挂载。

其他:Role RoleBinding

  • Role 定义(命名空间级别)一组权限

  • RoleBinding 可以把role或者clusterrole绑定到命名空间级别。区别上面的clusterrolebinding,可以把role或者clusterrole绑定到集群级别的。是一个绑定。

#资源清单

学习配置文件。资源是通过配置文件来描述的,配置文件可以是json yaml等文件,常用yaml

#3,对象的规约和状态

#spec(规约)

描述了对象的期望状态,是希望对象所具有的特征,以及关于对象的一些基本名称(例如名称),而不是必须的。创建对象时,必须提供对象的规约。

#status(状态)

表示对象的实际状态,该属性由k8s自己维护,k8s会通过一些列的控制器对对应对象进行管理,让对象尽可能的让实际状态与期望状态重合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值