总结:负载均衡将私有集群地址分配给一组副本,负载均衡将请求转发到后端容器。 在节点上实现网络代理来维护网络规则和四层负载平衡。
1. Kubernetes 概述
Kubernetes 是 Google 于 2014 年 6 月开源的容器集群管理系统。 使用Go语言开发。 Kubernetes 也称为 K8S。 。 K8S源自Google内部一个名为Borg的容器集群管理系统。 Borg 在 Google 花了 10 年时间进行大规模生产和运营。 K8S主要用于容器应用的自动化部署、伸缩和管理,提供资源调度、部署管理、服务发现、伸缩和监控等一整套功能。 2015年7月,Kubernetes v1.0正式发布。 截至2017年9月29日的最新稳定版本是v1.8.0。 Kubernetes 的目标是让容器化应用程序的部署变得简单高效。
官网:www.kubernetes.io
Kubernetes主要特点:1.数据量
利用这个可以在容器之间共享数据。数据量。
2.应用健康检查
容器内的服务可能被阻塞,无法处理请求。 您可以设置监控和检查策略以确保应用程序的稳健性。
3.应用实例副本
控制器维护一个Pod的多个副本,以确保一个Pod或一组类似的Pod始终可用。
3.我会的。
4.弹性伸缩
根据配置的指标(CPU使用率)自动伸缩Pod副本数量。
5.服务发现
使用环境变量或DNS服务插件来确保容器中的程序可以发现Pod条目的访问地址。
6.负载均衡
一组Pod副本被分配一个私有集群IP地址,负载均衡将请求定向到后端容器。 集群中的其他 Pod 可以通过此 ClusterIP 访问您的应用程序。
7.滚动更新
更新服务不间断,更新一次。删除单个 Pod,而不是同时删除整个服务。
8.服务编排
通过文件描述来部署服务,使应用部署更加高效。
9. 资源监控
Node Node组件集成了cAdvisor资源采集工具,通过Heapster聚合整个集群节点资源数据并存储在InfluxDB时序数据库中。在 Grafana 中查看它。
10.提供认证和授权
支持属性访问控制(ABAC)和角色访问控制(RBAC)认证和授权策略。
基本对象概念基本对象:1. Pod
Pod 是最小的部署单元。 一个 Pod 包含一个或多个容器,Pod 内的容器共享存储和网络,并在同一台 Docker 主机上运行。
2. 服务
- 服务是一种应用程序服务抽象,它定义了 Pod 的逻辑集合以及访问该 Pod 集合的策略。
服务代理 Pod 集合的对外表现是为访问入口分配一个集群 IP 地址,并将来自该 IP 的请求进行负载均衡并转发到后端 Pod 的容器。
Service 通过 LableSelector 选择一组要提供服务的 Pod。
3. 数据量。 共享 Pod 内容器使用的数据。
4.命名空间
命名空间允许将对象逻辑分配到不同的命名空间,由项目或用户单独管理,或者通过设置控制策略也可以实现多租户。
命名空间也称为虚拟集群。
5. 标签
标签用于区分对象(Pod、Service 等)并具有键值对。 每个对象可以有多个标签,对象通过标签关联起来。
基于基础对象的高级抽象:1.ReplicaSet
下一代ReplicationCont滚筒。 它始终确保指定数量的 Pod 副本,并提供声明性更新等功能。
RC 和 RS 之间的唯一区别是对标签选择器的支持。 RS支持新的基于集合的标签,而RC仅支持基于方程的标签。
2. 部署
部署是管理 ReplicaSet 和 Pod 的高级 API 对象,并提供声明性更新和其他功能。
官方建议使用Deployment来管理ReplicaSet,而不是直接使用ReplicaSet。 这意味着您不需要直接操作 ReplicaSet 对象。
3. StatefulSet
StatefulSet适用于具有唯一网络标识符(IP)、持久存储、有序部署、扩展、删除和滚动更新的持久化应用。
4. DaemonSet
aemonSet 确保所有(或部分)节点运行相同的 Pod。 当节点添加到 Kubernetes 集群时,Pod 会被调度在该节点上运行。 当从集群中删除节点时,DaemonSet 的 pod 也会被删除。 删除 DaemonSet 会清除该 DaemonSet 创建的所有 Pod。
5. 工作
这是一项一次性任务。 一旦操作完成,pod就会被销毁,并且不会重新启动新的容器。 任务也可以按计划运行。
2.k8s架构
系统组件主组件:1. -apiserver
Kubernetes API,集群集成入口,各组件的协调者,通过HTTP API提供接口服务,对所有对象资源的所有增删改查,执行监控操作。 传递给APIServer进行处理,然后发送到Etcd存储。
2.kube-controller-manager
处理集群内的常规后台任务。 一种资源对应一个控制器然后ControllerManager 负责管理这些控制器。
3.kube-scheduler
根据调度算法为新创建的Pod选择一个Node节点。
Node的组成:1.kubelet
kubelet是Node节点上master的代理。 管理本地运行的容器的生命周期,包括创建容器、挂载 Pod 数据卷、下载机密以及获取容器和节点状态。 kubelet 将每个 pod 转换为一组容器。
2.kube-proxy
在Node节点上实现Pod网络代理,用于维护网络规则和四层负载均衡。
3. 运行 Docker 或 Rocket(rkt)
容器。
第三方服务:1.etcd
分布式键/值存储系统。 用于维护集群状态,例如pod、服务和其他对象信息。
3.K8S常用命令显示节点
-o Wide以yaml格式显示详细信息 [root@linux[ k4]node1 ~]# kubectl get node -o WideNAME STATUS 角色年龄版本外部 -IP OS- 映像内核 - 版本容器 - 运行时 192.168.56.12 Ready 6d v1.10.8 CentOS Linux 7 (核心)3.10.0- 514.el7.x86_64 docker://18.6.1192.168.56.13 就绪 6d v1.10.8 CentOS Linux 7(核心)3.10.0-514.el7.x86_64 docker://18.6.1
创建部署
[root@linux-node1 ~]# kubectl run net-test --image=alpine --replicas=2 sleep 360000deployment.apps "net-test "已创建###Viewdeployments[root@linux-node1 ~]# kubectl getdeployments--all-namespaces-owideNAMESPACE 名称需要更新-到-当前可用日期- ]TO-DATE AGE 容器映像选择器default net-test 2 2 2 2 13s net-test alpine run=net-test
显示部署详细信息
[root@linux- ]node1 ~]# kubectl 描述部署 net-testName: net-testNamespace: defaultCreationTimestamp:2018 年 9 月 28 日星期五 05:25:49 -0400Labels:run=net-testAnnotations:deployment.kubernetes.io/revision=1Selector:run=net-testReplicas:需要 2 | 2 更新 | 2总计 | 2 个可用 | 0 个不可用StrategyType: RollingUpdateMinReadySeconds: 0RollingUpdateStrategy: 最多 1 个不可用,最多 1 个 SurgePod 模板:标签:run=net-test 容器:net-test:图像:alpine 端口: 主机端口: 参数:睡眠 360000 环境: 安装: 卷: 条件:类型 状态 原因 ---- --[ k4][ k4] -[k4 ] ------ 可用真实最小副本数ailable Progressing True NewReplicaSetAvailableOldReplicaSets: NewReplicaSet: net-test-5767cb94df(已创建 2/2 个副本)事件:类型原因消息年龄 ---- [ k4][k4 ]----------------[ k4]--正常扩容ReplicaSet 9mdeployment-controller副本集net-test-5767cb94df扩容至2
删除部署
[root@linux -node1 ~]# kubectl returnedeployment net-test -ndefaultdeployment.extensions "net-test" 已删除
查看 pod
[root@ linux- ]node1 ~]# kubectl get pod -o WideNAME READY STATUS RESTARTS AGE IP NODEnet-test-5767cb94df-7lwtq 1/1 Running 0 3m 10.2.96.11 192.168.56.13net-test-5767cb94df-wcwg5 1/1 Running 0 3m 10.2.96.10 192.168.56.12- yaml 格式为 Wide查看 pod 详细信息 kubectl get pod -o Wide[root@linux-node1 ~]# kubectl get pod net-test-5767cb94df-7lwtq - o WideNAME就绪状态重新启动 AGE IP NODEnet-test-5767cb94df-7lwtq 1/1 Running 0 2m 10.2.96.11 192.168.56.13
查看 Pod 详细信息
[root@ linux-node1 ~]# kubectl 是 pod net-test-5767cb94df-7lwtqName: net-test-5767cb94df-7lwtqNamespace:defaultNode:192.168 写入 .56.13/192.168。 56.13开始时间:2018年9月28日星期五05:25:49 -0400标签:pod-template-hash=1323765089 run=net-test注释:状态:运行IP:10.2.96.11控制者:ReplicaSet/net-test-5767cb94dfContainers:net-测试: 容器 ID:docker://fc0889ca3141cdcd29fc137da45dcb913b7aece71dea76e1508cf34aa93ed0ce 镜像:alpine 镜像 ID:docker-pullable://alpine@sha256:621c2f39f8133acb8e64023a94dbdf0d 5 102 b9e57c0dc184cadaf5528 端口: 主机端口: 参数:sleep 360000 状态:运行已启动完成:2018 年 9 月 28 日星期五 05:25:56 -0400 就绪:True 重新启动:0 环境: 挂载:/var/run/secrets/kubernetes.io/serviceaccount fromdefault-token[ k4]xr766 (b)公寓选项: 类型 状态 已初始化 True Ready True PodScheduled True Volumes:default-token-xr766: 类型:Secret (由 Secret 设置的卷) SecretName:default-token-xr766 选项:falseQoS 类别:BestEffortNode [ k4 ] 选择器: 容差: 事件:类型 原因 自消息以来的时间 ---- ----- - [ k4 ]--- ---- ------- 正常时间表 3 分钟 默认[k4 ] ]scheduler net-test-5767cb94df-7lwtq 成功分配到 192.168.56.13。 正常成功安装卷 3m kubelet,192.168.56.13 卷“default-”的 MountVolume.SetUp 成功。令牌 - XR766“正常拉动 3M Kubelet,192.168.56.13 拉动镜像” 正常拉动 3M Kubelet,192.168.56.13 成功拉动镜像“Pine”正常创建 3M Kubelet,192.168.56.13 创建容器 正常启动 3M Kubelet,192 .16 8. 56.13 启动容器
https://blog.csdn.net/liumiaocn/article/details/73913597 Kubernetes kubectl常用命令使用指南:1:创建和删除 https://blog.csdn.net/ qq_32828145 /article/details/81429232 K8S部署与服务
评论前必须登录!
注册