容器相关扫盲篇之Kubernetes

admin 2024年4月19日23:46:52评论1 views字数 2728阅读9分5秒阅读模式
知识宝库在此藏,一键关注获宝藏
在我们的《网络安全等级保护容器安全要求》中有"容器集群"的术语,那么容器集群究竟是一个什么样的概念呢。
什么是容器集群?

容器集群就像一个大家庭,里面住着很多个容器(就像家庭成员),每个容器都有自己的一个小房间(应用程序)。这些容器(家庭成员)可以互相合作,一起工作来提供服务(比如网站、应用程序)给外界用户使用。

容器集群的好处就是,这些家庭成员可以根据需要增加或减少,并且某个家庭成员生病了或外出旅行,其他家庭成员可以顶替他们的工作(高可用性)。同时,家庭成员之间不会互相打扰,每个人都有自己的空间和资源。

而容器集群的管理工具(比如Kubernetes就像一个家庭大管家),负责协调安排家庭成员的工作任务,确保大家一起协作顺利运行。这样,就可以方便地部署和管理各种应用程序,保证它们能够高效、可靠地运行在云端或服务器上。

容器相关扫盲篇之Kubernetes
K8S是什么?

Kubernetes(K8S)是一个开源的、用于自动化部署、扩展和管理容器化应用程序的平台。简单来说,K8s就是大规模管理容器应用的自动化工具

在Kubernetes中,多个容器化的应用程序被组织成一个集群,由Master节点和多个Worker节点组成。Master节点负责集群的管理和控制,而Worker节点则负责运行应用程序的容器。

Kubernetes通过对容器进行自动化部署、扩展、负载平衡等功能,使得用户可以更加方便地管理和监控容器化应用程序。用户可以通过Kubernetes定义应用程序的部署方式、资源需求、网络配置等信息,Kubernetes会根据这些信息自动调度和管理应用程序在集群中的运行。通过Kubernetes,用户可以实现应用程序的自动化部署、高可靠运行、弹性扩展以及故障恢复等功能,提高了整个应用程序的部署和运维效率。

针对K8S我们需要了解什么

容器相关扫盲篇之Kubernetes

根据上图,我们可以简单理解一下Kubernetes 涉及的相关内容

Client:用户交互操作层面,用户通过kubectl命令或者UI图形化管理界面与k8s集群进行交互。属于用户触发请求的客户端,即Kubectl, 用户的各种触发的命令就是通过kuberctl统一封装后进行命令触发的。

Master节点:Master是指控制整个集群的核心组件集合。Master节点负责管理集群中的所有工作,并维护集群的状态、调度任务、监控节点、处理集群的配置等重要任务。用于处理用户触发的请求,进行处理决策。
    -API-Server作为整个集群的入口,提供了API服务,负责接收来自用户和其他组件的请求,并对这些请求进行处理。
    -ETCD负责存储集群的所有状态数据,包括配置信息、节点信息、Pod状态等,确保集群的数据一致性和持久化。
    -Controller-manager负责维护集群状态,确保实际状态与期望状态一致,比如:pod的生命周期、节点状态等。
    -Scheduler:负责对新创建的Pod进行调度,在集群中选择合适的节点进行部署,并考虑资源约束、节点健康状况等因素。
Worker负责运行应用程序的容器和负责维护容器的运行环境。命令真正的执行者,读取etcd的结果将数据最终执行。

    -Node(节点)是Kubernetes集群中用于运行容器化应用程序的实际主机,每个Node节点都运行着Kubernetes代理(kubelet)服务,并连接到Master节点以接收指令。

    -kubelet:是每个Node节点上的Kubernetes代理服务,负责管理Pod和容器的生命周期。kubelet接收来自Master节点的指令,创建、管理和监控Pod,并与容器运行时通信以确保Pod中的容器运行正常。
    -kube-proxy:是负责维护节点上的网络规则和负载均衡的组件。kube-proxy在每个Node节点上运行,负责为Kubernetes服务提供网络代理、服务发现和负载均衡功能。
    -Pod(容器组):是Kubernetes中最小的调度单元,它可以包含一个或多个相互关联的容器。Pod提供了一个逻辑主机,容器共享Pod的网络命名空间和存储卷,用于运行相关的进程或服务。

    -Container(容器):是运行在Pod中的应用程序的隔离、封装的环境。容器化应用程序能够独立运行、互不干扰,容器内包含了应用程序及其依赖的所有运行时环。

K8S交互式可视化工具

这么说还是有点抽象,我们来看看一些可视化的UI页面。这里使用的是Rancher平台,简单来说它就是Kubernetes集群的可视化管理工具。

通过管理平台,我们可以很清晰的找到相应的master以及node,而Client 就是我们的可视化界面

容器相关扫盲篇之Kubernetes

创建并启动相应的pod后,容器会选择合适的Node节点进行启动

容器相关扫盲篇之Kubernetes

当部署一个应用程序到Kubernetes集群中后,访问容器中的应用通常是通过Service来实现的。Service是Kubernetes中用于暴露应用程序服务的一种资源类型,可以让外部用户访问在Pod中运行的应用程序。

容器相关扫盲篇之Kubernetes
Service(服务):在Kubernetes中,Service用于暴露应用程序内部的Pod或一组Pod到集群内部或外部。Service提供了一个稳定的网络端点,用于负载均衡访问Pod,而不需要直接暴露Pod的IP地址。根据Service的类型不同,暴露的方式也会有所不同:
ClusterIP:在集群内部暴露Service,只能在集群内部访问。
NodePort:将Service暴露在每个Node的固定端口上,可在集群外部通过Node节点的IP和端口访问。

LoadBalancer:在支持负载均衡的云平台上提供LoadBalancer服务来暴露Service,可在集群外部访问。

这里我们采用NodePort,暴露端口,这样我们通过IP+端口的形式,就可以在外部访问对应的应用程序了

容器相关扫盲篇之Kubernetes

容器相关扫盲篇之Kubernetes
以上仅仅是简单粗暴的对Kubernetes集群进行了介绍,感兴趣的小伙伴可自行搭建,后续匹配《网络安全等级保护容器安全要求》条款时,我们采用如下环境进行实验:
容器集群:kubernetes v1.28.8
管理平台:Rancher v2.8.2

镜像仓库:harbor v2.5.0

但仅仅使用这些环境,是有许多条款达不到我们的要求,还是需要有专门的产品去做容器安全这块。目前实验环境缺少容器安全专业工具,有免费好用的容器安全产品,知道小伙伴可以推荐一下。例如使用专业工具审计容器实例事件、使用专业工具监测管理平台和容器实例并分析是否存在异常或恶意行为等等。

原文始发于微信公众号(等保不好做啊):容器相关扫盲篇之Kubernetes

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月19日23:46:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   容器相关扫盲篇之Kuberneteshttp://cn-sec.com/archives/2637873.html

发表评论

匿名网友 填写信息