简单入门Kubernetes
标签:
什么是Kubernetes官网
https://kubernetes.io/
中文版:https://kubernetes.io/zh/
个人理解
基于容器技术
分布式架构
弹性伸缩
隔离物理机
和谷歌的Borg有关系
用于部署、管理、运维我们的应用
Kubernetes核心概念Kubernetes中的大部分概念,如:Node、Pod、Replication Controller、Service,都可以被视作一种资源对象。几乎所有的资源对象都可以通过Kubernetes提供的kubectl工具执行CRUD,并将其保存在etcd中进行持久化存储。
从这个角度看,Kubernetes是一个高度自动化的资源控制系统
它通过比较etcd中保存的资源期望值与当前环境的实际资源状态之间的差异,实现自动控制和自动纠错的高级功能
拥有唯一的名称
拥有一个虚拟IP和端口号
能够提供某种远程服务能力
被映射到提供这种服务能力的一组容器应用上
Node物理机
云上的虚拟机
反正就是一台机器就对了
通常一个节点运行几百个Pod
Replication Controller副本集
它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩
RC会在每个节点上创建Pod,Pod上如果有相应的Images可以直接创建,如果没有,则会拉取这个镜像再进行创建
在Kubernetes集群中,只要为需要扩容的Service关联到Pod创建的一个RC,服务扩容和升级就会变得非常简单
一个RC文件,包含以下三个关键信息
目标Pod的定义
目标Pod需要运行的副本数量
要监控的目标Pod的标签
删除RC,,并不会删除通过该RC创建好的Pod
如果要删除RC对于的Pod,可以设置replicas值为0,然后更新RC
kubectl提供stop、delete命令,来一次性删除RC及其对应的Pod
在应用升级的时候
其实就是一个新的容器镜像替代旧版本的过程
通过改变RC中Pod模板的镜像版本,实现滚动升级
ReplicaSetReplica Set是Replication Controller的下一代
当前唯一的区别就是RS支持基于集合的Label Selector
我们很少单独设置RS,主要是被Deployment这个更高层的资源对象所使用
从而形成一整套Pod创建、删除、更新的编排机制
Replica Set和Deployment这两个重要的资源对象,主键替代了RC的作用
Deployment为了更好的解决Pod的编排问题,Deployment内部使用Replica Set
我们把Deployment当做一次RC的升级即可
Pod是Kubernetes管理的最小运行单元
一个Pod规定了其能够使用的硬件资源,达到隔离的作用
Pod内运行一个特殊的Container---Pause,在Pod内的其他Container,共享Pause的网络栈和Volume挂载卷
Pause
用pause这个不易死亡的容器代表pod的存活与否
pod内的多个业务容器共享Pause的IP,共享Pause挂载的Volume
Kubernetes为每个Pod都分配了唯一IP--->Pod IP
一个Pod内的多个容器共享Pod IP
一个Pod内的容器与另外Node上的Pod容器可以直接通信
Container镜像启动后,就是Container
Container运行在Pod中,多个紧密相关联的Container,我们一般会让他们运行在同一个Pod
LabelKubernetes中的各个对象,都可以打上Label标签
标签是name=mysql这样子的键值对
一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上
Kubernetes架构设计Master是集群控制节点
负责运行管理相关的进程
通常Master单独占用一个服务器,如果需要高可用,建议部署3台服务器
Master上运行着以下核心进程
Kubernetes API Server:kube-apiserver,集群控制入口
Kubernetes Controller Manager:kube-controller-manager,资源对象管理
Kubernetes Scheduler:kube-scheduler,资源调度
Master上通常还部署etcd服务,因为Kubernetes里的所有资源对象数据都保存在etcd中
Node工作节点,运行应用程序
Node上运行着以下核心进程
kubelet:负责Pod对应容器的创建、启停,与Master的协作,实现集群管理
kube-proxy:实现Kubernetes Service的通信,负载均衡的重要组件
docker
Node可以在Kubernetes运行期间动态加入集群
前提是Node节点已经安装好了上述核心进程
默认情况下,kubelet会向Master注册自己
如果某个Node失联,Master会触发“工作负载大转移”的自动流程
HelloWorldKubernetes的安装先不讲了
现在要做的事情是
使用Kubernetes部署MySQL与JavaWeb程序
JavaWeb可以访问Kubernetes
基本步骤
MySQL副本集
MySQL Service
JavaWeb副本集
JavaWeb Service
MySQL RC温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41571.html