计算机 ==>> 虚拟化技术
虚拟化技术
docker
安装启动
指定下载源
1 | sudo yum install -y yum-utils |
1 | sudo yum-config-manager \ |
安装
1 | sudo yum install docker-ce docker-ce-cli containerd.io |
启动
1 | sudo systemctl start docker |
k8s
使用 v1.18.0 版本进行学习,版本号格式遵循 Semantic Versioning 规则。
概念
容器
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
1 | kubectl get pods |
1 | kubectl apply -f myapp.yaml |
拓扑分布约束(Topology Spread Constraints):控制 Pods 在集群内故障域 之间的分布,例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域。
1 | apiVersion: v1 |
1 | kubectl get node |
PodPreset:在 Pod 创建时,用户可以使用 PodPreset 对象将特定信息注入 Pod 中,这些信息可以包括 Secret、卷、卷挂载和环境变量。
1 | kubectl get secret |
工作负载
ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。
1 | apiVersion: apps/v1 |
1 | kubectl get rs |
Deployment:控制器为 Pods 和 ReplicaSets 提供声明式的更新能力。
1 | apiVersion: apps/v1 |
启动deployment
1 | kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml |
查看deployment
1 | kubectl get deployments |
更新deployment
1 | kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record |
回滚deployment
1 | kubectl rollout undo deployment.v1.apps/nginx-deployment |
StatefulSet:是用来管理有状态应用的工作负载 API 对象。
DaemonSet:确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
Job:会创建一个或者多个 Pods,并确保指定数量的 Pods 成功终止。 随着 Pods 成功结束,Job 跟踪记录成功完成的 Pods 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pods。
1 | apiVersion: batch/v1 |
删除job
1 | kubectl delete jobs/pi |
如果 Job 由某种更高级别的控制器来管理,例如 CronJobs, 则 Job 可以被 CronJob 基于特定的根据容量裁定的清理策略清理掉。自动清理已完成 Job (状态为 Complete 或 Failed)的另一种方式是使用由 TTL 控制器所提供 的 TTL 机制。 通过设置 Job 的 .spec.ttlSecondsAfterFinished 字段,可以让该控制器清理掉 已结束的资源。pi-with-ttl 在结束 100 秒之后,可以成为被自动删除的标的。如果该字段设置为 0,Job 在结束之后立即成为可被自动删除的对象。 如果该字段没有设置,Job 不会在结束之后被 TTL 控制器自动清除。
Kubernetes 垃圾收集器的作用是删除某些曾经拥有属主(Owner)但现在不再拥有属主的对象。
TTL 控制器:提供了一种 TTL 机制来限制已完成执行的资源对象的生命周期。 TTL 控制器目前只处理 Job, 可能以后会扩展以处理将完成执行的其他资源,例如 Pod 和自定义资源。
Cron Job:创建基于时间调度的 Jobs。一个 CronJob 对象就像 crontab (cron table) 文件中的一行。 它用 Cron 格式进行编写, 并周期性地在给定的调度时间执行 Job。CronJobs 对于创建周期性的、反复重复的任务很有用。
1 | apiVersion: batch/v1beta1 |
负载均衡
服务拓扑(Service Topology)可以让一个服务基于集群的 Node 拓扑进行流量路由。 例如,一个服务可以指定流量是被优先路由到一个和客户端在同一个 Node 或者在同一可用区域的端点。
Service 定义了这样一种抽象:逻辑上的一组 Pod,一种可以访问它们的策略 —— 通常称为微服务。
1 | apiVersion: v1 |
由于此服务没有选择算符,因此 不会 自动创建相应的 Endpoint 对象。 你可以通过手动添加 Endpoint 对象,将服务手动映射到运行该服务的网络地址和端口
1 | apiVersion: v1 |