k8s⼊门教程
1. k8s概述
Kubernetes(简称K8S)是Google开源的分布式的容器管理平台,⽅便我们在服务器集中管理我们容器化应⽤。
教程主要介绍怎么使⽤阿⾥云容器服务(kubernetes版本)。
2. k8s常⽤概念介绍
节点(Master node and Worker node)
节点通常指的就是服务器,在k8s中有两种节点:管理节点(Master Node)和⼯作节点(Worker Node)
管理节点(Master Node):负责管理整个k8s集,⼀般由3个管理节点组成HA的架构。
⼯作节点(Worker Node):主要负责运⾏容器。
命名空间 (Namespace)
数据库管理工具使用
k8s命名空间主要⽤于隔离集资源、隔离容器等,为集提供了⼀种虚拟隔离的策略;默认存在3个名字空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public。
Object
mysql入门基础教程
k8s 对象(Object)是⼀种持久化存储并且⽤于表⽰集状态的实体。k8s 对象其实就是k8s⾃⼰的配置协议,总之我们可以通过定义⼀个object让k8s根据object定义执⾏⼀些部署任务、监控任务等等。
POD
Pod是 Kubernetes 部署应⽤或服务的最⼩的基本单位。⼀个Pod 封装多个应⽤容器(也可以只有⼀个容器)、存储资源、⼀个独⽴的⽹络 IP 以及管理控制容器运⾏⽅式的策略选项。
副本集 (Replica Set,RS)
是⼀种控制器,负责监控和维护集中pod的副本(replicas)数,确保pod的副本数是我们期望的样⼦。
部署 (Deployment)
表⽰对k8s集的⼀次更新操作,是k8s集中最常⽤的Object,主要⽤于部署应⽤。⽀持滚动升级。
服务 (service)
treemap遍历是对应⽤的抽象,也是k8s中的基本操作单元,⼀个服务背后由多个pod⽀持,服务通过负载均衡策略将请求转发到容器中。
Ingress
是⼀种⽹关服务,可以将k8s服务通过http协议暴露到外部。
⽆状态应⽤ & 有状态应⽤
⽆状态应⽤指的是应⽤在容器中运⾏时候不会在容器中持久化存储数据,应⽤容器可以随意创建、销毁;如果⼀个应⽤有多个容器实例,对于⽆状态应⽤,请求转发给任何⼀个容器实例都可以正确运⾏。例如:web应⽤
有状态应⽤指的是应⽤在容器中运⾏时候需要稳定的持久化存储、稳定的⽹络标识、固定的pod启动和停⽌次序。例如:mysql数据库
3. k8s架构
通过上图可以看出k8s整体架构主要由左边的master节点和右边的worker组成,master节点负责对整个集进⾏管理,右边的电脑表⽰worker节点负责运⾏我们部署的容器。4. 基于k8s的常见web应⽤部署架构
查询重复数据sql
从上往下看,ingress作为http请求⼊⼝接收客户端请求,ingress根据路由规则将请求转发给对应的服务,服务再根据负载均衡策略将请求转发给对应的容器实例,底层基础云服务由所有容器实例共享。
5. 部署应⽤
下⾯是通过阿⾥云容器服务后台以可视化的⽅式部署应⽤。
阿⾥云部署应⽤连接。
6. 容器之间共享⽂件存储
在集环境中,默认情况如果应⽤在容器A创建了⼀个⽂件,容器B⽆法读取这个⽂件。
java培训能到工作吗在k8s中提供了持久卷(Persistent Volumes)解决持久化存储问题,持久卷将存储细节和存储数据访问分离,对于⽤户⽽⾔使⽤同统⼀的接⼝访问不同存储系统上的数据。
根据存储⽅式不同,k8s⽀持多种持久卷(Persistent Volumes)类型,阿⾥云也对k8s进⾏⼀些扩展⽀持,⽬前⽀持NAS、OSS、云盘三种持久卷类型。
下⾯是关于阿⾥云⽀持的持久卷类型的介绍:
NAS  - 阿⾥云⾼性能分布式⽂件系统,⽀持共享存储。
OSS  - 阿⾥云对象存储, 也是⼀个分布式⽂件系统,⽀持共享存储。
云盘 - 阿⾥云云盘,不⽀持共享存储。
根据上⾯的介绍我们可以选择NAS或者OSS实现共享⽂件数据,OSS主要⽤于图⽚,视频存储场景可以⽀持⽂件直接对外提供访问服务,在容器共享⽂件数据,我们⼀般选择NAS, 下⾯是K8S使⽤NAS的教程:
关于云盘,不能多个容器共享,每个POD独占⾃⼰的云盘实例,适合⽤于为部署有状态应⽤提供持久化存储,例如部署mysql, 将mysql数据保存到云盘中。
!!!提⽰:⽆论使⽤何种持久卷类型,最终都是以挂载的⽅式,关联到容器中。对⽤户来讲,最终看到的就是⼀个⽬录。
二郎神为什么叫二郎
7. k8s配置管理
如果希望⼀个镜像(image)更具有通⽤性,与环境⽆关,那么应该将环境相关的配置参数从镜像中分离出来。
举个例⼦:
我们将⼀个web应⽤的代码打包到⼀个镜像中,如果web应⽤关于数据库的连接地址、帐号、密码也⼀同打包到镜像中,那么如果我们希望这个镜像换⼀个数据库配置信息怎么办?只能重新打包镜像。
k8s为我们提供了两种配置管理的⽅式:configMap和secret。
他们都是键值对的形式,区别就是secret专门⽤于管理铭感信息配置,例如:密码。
⽆论使⽤那种⽅式管理配置,最终配置信息都需要注⼊到容器中。
⽬前有两种⽅式将配置信息注⼊到容器中:环境变量和挂载(mount)数据卷
通过环境变量⽅式注⼊容器,容器中的程序只要通过读取环境变量值就可以获取配置信息。
通过挂载数据卷的⽅式注⼊,⼀般都是挂载到某个⽬录,只要读取这个⽬录中的数据就可以获取配置信息。
下⾯是阿⾥云使⽤配置的例⼦:
⾸先是创建配置项:
接下来是配置注⼊到容器中,先看通过环境变量注⼊:
在阿⾥云后台新建应⽤或者编辑应⽤,都会出现下⾯的窗⼝
下⾯是通过挂载的⽅式注⼊配置信息:
同样是在新建应⽤或者编辑应⽤窗⼝中,设置数据卷。
阿⾥云后台操作详细说明连接:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。