云建站推荐,好姑娘高清免费观看,建设银行官网网站首页,口碑营销中容易出现哪些问题目录
1、前言
2、Kubernetes介绍
2.1、什么是Kubernetes
2.2、主要功能
2.3、与Docker的关系
2.4、Kubernetes集群架构体系
3、Kubernetes组件
3.1、核心组件
3.2、附加组件
4、Kubernetes对象
4.1、对象管理
4.2、命名空间
4.3、标签 1、前言
Docker 容器技术将…目录
1、前言
2、Kubernetes介绍
2.1、什么是Kubernetes
2.2、主要功能
2.3、与Docker的关系
2.4、Kubernetes集群架构体系
3、Kubernetes组件
3.1、核心组件
3.2、附加组件
4、Kubernetes对象
4.1、对象管理
4.2、命名空间
4.3、标签 1、前言
Docker 容器技术将应用及其依赖打包到镜像中从而很好地解决了应用部署与集成的问题。低在现实中却很少通过 Docker 将应用进行大规模的部署。这主要是因为Docker 本质上是一种单的容器技术或者说是一种工具并不能很好地将应用组织起来难以独立地支撑起生产环境中应用的大规模容器化部署。而采用 Kubernetes 则可以很好地解决这个问题。
2、Kubernetes介绍
Kubernetes官方网站Kubernetes
2.1、什么是Kubernetes
Kubernetes 简称 K8s是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。它最初源于谷歌内部的 Borg 系统提供的功能包括
应用的服务排容器集群的部署集群的管理 通过它能够非常方便地进行集群的扩容与缩容。 Borg 系统是一个集群管理器它管理着 Google 内部很多个应用集群而每个集群都有成千上万台机器。Borg 系统通过准入控制、高效的任务打包、超额的资源分配以及进程级隔离的机器共享实现了超高的资源利用率。 Kubernetes 通过一个抽象的逻辑单元 Pod 将应用的容器组合在一起从而让服务更容易被发现和管理。Kubernetes 中沉淀了 Google 多年的生产环境运行经验目前已经形成了一个完善的生态圈。Google在2014年将其开源。
2.2、主要功能
Kubernetes主要提供了7个重要功能
1、自动发布和回滚
通过持久化存储来保存应用发布时的相关配置信息从而在部署过程中发生问题时能够执行回滚操作。
2、自动化装箱
按照应用对资源的要求将容器进行自动部署从而提高了资源的利用率节省了资源。
3、水平扩容
根据应用在运行过程中对 CPU、内存的使用情况通过简单的命令即可对应用进行扩容和缩容。
4、配置管理
将集群和应用的配置信息进行了持久化存储可以在不重新构建镜像的情况下更新应用的配置信息。
5、自愈能力
实现了容器的高可用。当节点上运行的容器失败后Kubernetes 会对容器进行重启。即使节点出现宕机Kubernetes 也会对容器进行重新部署和重新调度容器能够正常运行后才会对外提供服务。
6、服务发现和负载均衡
内置了服务发现机制和负载均衡功能不需要使用额外的服务。
7、存储编排
利用持久卷和持久卷声明完成存储系统的自动挂载同时支持多种存储系统(如本地存储、云存储和网络存储等 )。
2.3、与Docker的关系
Kubernetes 并不能够取代 Docker它们之间是平台与组件的关系 Kubernetes 可以将Docker 作为运行时组件但并不完全依赖 Docker。因此严格地说Kubernetes 应该被称为容器编排技术而不是容器技术。
2.4、Kubernetes集群架构体系 Kubernetes是属于主从分布式架构包括了master节点和node节点master为主节点而node为工作节点一般实际项目中至少要有2个node节点。
master节点控制着整个集群并对集群进行管理和调度。master 节点上运行着 APIServer、scheduler、controller-manager 等服务组件并且 master 节点还管理着集群的持久化存储。node 节点 实际运行业务应用容器的节点。node 节点上运行着 kubelet、kube-proxy和Docker 容器的守护进程。node 节点通过 kubelet 与 master 节点上的APIServer进行交互从而在集群中对各种资源执行增加、删除、修改和查询等操作。
3、Kubernetes组件
3.1、核心组件
1、API Server
它提供了操作 Kubernetes 集群的唯一入口通过它可以访问集群中的所有资源。它也提供了用户的认证及授权功能并支持访问控制的管理和服务的注册与发现等机制。API Server 也可以与ETCD 存储器进行交互从而将集群的信息持久化保存。
2、scheduler
它负责管理和调度集群资源。Kubernetes 许用户预先定义集群资源的调度策略通过scheduler 将 Pod 调度到相应的 node 节点上。
3、controller-manager
它负责维护集群的状态如故障检测、自动扩展、滚动更新等。
4、kubelet
它负责管理 node 节点上运行的 Pod包括 Pod 的创建、修改、删除、重启及健康状态监控等。它还负责与 master 节点上的API Server 进行交互定时将 node 节点的状态发送给API Server并接收APIServer 下发的指令。
5、kube-proxy
它会根据 ETCD 中存储的应用配置信息在 node 节点上启动一个监听进程从而将外部请求路由转发到后端正确的容器中。另外kube-proxy 还解决了服务端口冲突的问题并为部署在Kubernetes 集群中的应用提供访问外部网络的能力。kube-porxy 支持随机和轮询这两种负载均衡的路由算法。
6、Docker 容器的守护进程
它负责 Docker 的镜像管理以及 Pod 和容器的真正运行是 Kubernetes 真正的执行引擎。
3.2、附加组件
附加组件不是必需的但是可以增强Kubernetes功能。
1、kube-dns
为整个Kubernetes集群提供DNS服务。
2、Ingress
为集群中的服务提供最佳的外部访问方式。
3、Heapster
监控Kubernetes集群资源。
4、Dashboard
Web UI。
5、Federation
提供跨可用的k8s集群。
6、Fluentd-elasticsearch
提供k8s集群日志的采集、存储和查询。
4、Kubernetes对象
Kubernetes 将所有的内容如 Pod、Service、PV和PVC等都抽象为“资源”。“资源的实例是“对象”而对象可以被持久化。Kubernetes 使用对象去代表整个集群。对象描述了如下信息
集群中有哪些应用它们运行在哪些节点上。应用可以使用哪些资源或对象。
4.1、对象管理
由于 master 节点上的 API Server 是操作集群资源的唯一入口因此对象的管理都是通过API Server 来完成的。Kubernetes 提供的这些API是Restful API所以即使使用命令行I具kubectl 来操作集群实际上也是调用 API Server 中提供的接口来完成客户端的请求的。
Kubernetes 使用配置文件来描述和管理对象配置文件格式可以是JSON或YAML 格式更常用的是YAML格式。
下面是 Kubernetes 官方提供的一个 YAML 示例文件它展示了 Kubernetes Deployment对象的属性的必需字段和规约。
apiVersion: apps/vl
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas:2 #设置Deployment 的副本数为2template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
参数说明
apiVersion创建该对象所使用的 Kubernetes API的版本kind指定对象的类型metadata设置对象的元信息包括对象的名称、ID 及命名空间等spec设定对象的规约信息
4.2、命名空间
Kubernetes 支持多个虚拟集群它们的底层依赖同一个物理集群。通过命名空间可以将这些虚拟集群从逻辑上进行隔离。同一个命名空间中的对象名称必须唯一并且不能跨越命名空间。每个Kubernetes的对象只能属于一个命名空间。不同的命名空间不能互相嵌套。
获取当前命名空间的命令
kubectl get namespaces
4.3、标签
标签(Labels)是附加到 Kubernetes 对象上的键值对。通过使用标签用户可以为对象指有意义且相关的标识属性。标签用于组织和选择对象。可以在创建对象时创建标签也可以在对创建成功后随时添加标签。可以为一个对象添加多个标签但是同一个对象上的标签不能重复.
标签的定义可以在“metadata”字段中通过“labels”关键字进行定义。如
metadata: {labels: {keyl :valuel,key2:value2}
}
对象的标签可以与“selector”选择器配合使用并用表达式对条件加以限制从而实现更精确、更灵活的资源查找。 标签是Kubernetes 中非常强大的一个功能。所有的 Kuberetes 资源都可以使用标签例如:在 node 节点上增加标签,然后利用 Pod的标签选择器将Pod分配到不同类型的 node节点上。