ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

(P1-P9)初窥kubernetes全貌

2021-09-22 23:03:33  阅读:159  来源: 互联网

标签:容器 控制器 P1 kubernetes P9 存储 Docker 节点


文章目录

1 docker容器技术

  • Docker提供了一种将应用程序安全,隔离运行的一种方式,能够将应用程序依赖和库文件打包在一个容器中,后续再任何地方运行起来即可,其包含了应用程序所依赖相关环境,一次构建,任意运行(build once,run anywhere)
    在这里插入图片描述

  • Docker组成:
    Docker Daemon 容器管理组件,守护进程,负载容器,镜像,存储,网络等管理
    Docker Client 容器客户端,负责和Docker Daemon交互,完成容器生命周期管理
    Docker Registry 容器镜像仓库,负责存储,分发,打包
    Docker Object 容器对象,主要包含container和images
    容器给应用程序开发环境带来很大的便利,从根本上解决了容器的环境依赖,打包等问题,然而,

  • Docker带来的容器打包的便利,同时也带来了以下的挑战:
    容器如何调度,分发
    多台机器如何协同工作
    Docker主机故障时应用如何恢复
    如何保障应用高可用,横向扩展,动态伸缩
    在这里插入图片描述

2.2 kubernetes简介与功能

  • Kubernetes是google开源的一套微服务,容器化的编排引擎,提供容器话应用的自动化部署,横向扩展和管理,是google内部容器十多年实战沉淀的结晶,已战胜Swarm,Mesos成为容器编排的行业标准。

  • kuberntes内置有很多非常优秀的特性使开发者专注于业务本身,其包含的功能如下:
    在这里插入图片描述

  • Service discovery and load balancing,服务发现和负载均衡,通过DNS实现内部解析,service实现负载均衡

  • Storage orchestration,存储编排,通过plungin的形式支持多种存储,如本地,nfs,ceph,公有云快存储等

  • Automated rollouts and rollbacks,自动发布与回滚,通过匹配当前状态与目标状态一致,更新失败时可回滚

  • Automatic bin packing,自动资源调度,可以设置pod调度的所需(requests)资源和限制资源(limits)

  • Self-healing,内置的健康检查策略,自动发现和处理集群内的异常,更换,需重启的pod节点

  • Secret and configuration management,密钥和配置管理,对于敏感信息如密码,账号的那个通过secret存储,应用的配置文件- 通过configmap存储,避免将配置文件固定在镜像中,增加容器编排的灵活性

  • Batch execution,批处理执行,通过job和cronjob提供单次批处理任务和循环计划任务功能的实现

  • Horizontal scaling,横向扩展功能,包含有HPA和AS,即应用的基于CPU利用率的弹性伸缩和基于平台级的弹性伸缩,如自动增加node和删除nodes节点。

  • 参考:生产级别的容器编排系统kubernetes入门到实战(一)初窥kubernetes全貌

3.kubernetes架构解析

在这里插入图片描述

  • kube-apiserver 功能
    (1)k8s nodes上的所有请求都要经过apiserver
    (2)认证和授权
    (3)将数据写入etcd数据库

  • etcd
    (1)etcd 是兼具一致性和高可用性的键值数据库
    (2)保存和持久化集群状态信息

  • kube-scheduler
    (1)过滤:将满足条件的node筛选出来进行排序,最优的节点运行重启
    (2)调度策略:硬件/软件/策略约束、亲和性和反亲和性规范等

  • kube-controller-manager
    这些控制器包括:
    节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应
    任务控制器(Job controller): 监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
    端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)
    服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌

  • cloud-controller-manager
    (1)与公有云进行集成
    (2)下面的控制器都包含对云平台驱动的依赖:
    节点控制器(Node Controller): 用于在节点终止响应后检查云提供商以确定节点是否已被删除
    路由控制器(Route Controller): 用于在底层云基础架构中设置路由
    服务控制器(Service Controller): 用于创建、更新和删除云提供商负载均衡器

  • Node 组件
    (1)容器运行时(Container Runtime)
    容器运行环境是负责运行容器的软件。
    Kubernetes 支持多个容器运行环境: Docker、 containerd、CRI-O 以及任何实现 Kubernetes CRI (容器运行环境接口)。
    (2)kubelet
    kubelet创建和管理Container Runtime资源,k8s通过kubelet来判断node的健康状态,容器不健康会迁移;
    (3)kube-proxy
    实现 Kubernetes 服务(Service) 概念的一部分;
    通过iptables或lvs定义负载均衡的策略;
    暴露容器对外服务的实现;

  • 附加插件(Addons)
    (1)DNS
    (2)Web 界面(Dashboard )
    (3)容器资源监控
    监控系统用于采集node和pod的监控数据
    metric-server 核心指标监控
    prometheus 自定义指标监控,提供丰富功能
    heapster+influxdb+grafana 旧核心指标监控方案,现已废弃
    (4)集群层面日志
    日志采集系统,用于收集容器的业务数据,实现日志的采集,存储和展示,由EFK实现
    Fluentd 日志采集
    ElasticSearch 日志存储+检索
    Kiabana 数据展示

  • 参考:Kubernetes 组件

4.CNCF蓝图

在这里插入图片描述

  • 云原生相关内容
    在这里插入图片描述

  • CNCF

标签:容器,控制器,P1,kubernetes,P9,存储,Docker,节点
来源: https://blog.csdn.net/u011436427/article/details/120424085

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有