一、Kubernetes是什么
Kubernetes是一个很容易地部署和管理容器化的应用软件系统,使用Kubernetes能够方便对容器进行调度和编排。Kubernetes提供服务发现、伸缩、负载均衡、自愈甚至选举等功能,让开发者从基础设施相关配置等解脱出来。
1.如何创建一个K8S对象:
必须提供对象的 spec
,用来描述该对象的期望状态, 以及关于对象的一些基本信息(例如名称)。一般用yaml文件表示,如下:
使用 kubectl
命令行接口(CLI)的 kubectl apply 命令, 将 .yaml
文件作为参数。
kubectl apply -f https://k8s.io/examples/application/deployment.yaml
二、Kubernetes对象
1.k8s对象管理
指令式命令
通过创建 Deployment 对象来运行 nginx 容器的实例:
kubectl create deployment nginx --image nginx
指令式对象配置
kubectl 命令指定操作(创建,替换等),可选标志和 至少一个文件名。指定的文件必须包含 YAML 或 JSON 格式的对象的完整定义。
声明式对象配置
使用声明式对象配置时,用户对本地存储的对象配置文件进行操作,但是用户 未定义要对该文件执行的操作。 kubectl
会自动检测每个文件的创建、更新和删除操作。 这使得配置可以在目录上工作,根据目录中配置文件对不同的对象执行不同的操作。
容器和JVM、VM的区别:
docker这类“容器”技术是模拟了一整个操作系统,它是静态存在的,可以支撑任何相同平台的应用程序执行,并且容器本身是进程无关的。
jvm是一个特定代码的执行平台,它是运行时才存在的,只能支撑特定代码的执行,并且必须是在jvm进程内。
VM 模拟整个计算机,包括虚拟化硬件、OS、用户模式及其自身的内核模式。 VM 非常灵活,可为应用程序提供广泛的支持;但是,VM 往往比较大,会消耗主机资源。
三、Kubernetes集群架构
Master:集群的控制节点。在生产环境中为了保障集群的高可用性,通常部署多个Master。
Node:工作节点、计算节点。应用部署在Node节点上。
一个Node里可以有很多Pod,一个Pod里可以有很多Container。一般说的实例是Pod。
Pod的属性:1.Label:资源分类,粒度较细。
2.Namespace:资源分组,一般用于团队。
用YAML文件描述Pod:
- metadata:一些名称/标签/namespace等信息。
- spec:Pod期望的配置信息,包括使用什么镜像image,存储资源volume等。limits是使用资源的上限,requests是拉起新容器的下限。
- status:对象的当前状态,是由 Kubernetes 系统和组件设置并更新的。