Kubernetes学习总结(17)—— Kubernetes 快速入门需要掌握的知识点总结
发布日期:2025-04-03 06:22:30 浏览次数:7 分类:精选文章

本文共 2448 字,大约阅读时间需要 8 分钟。

Docker、Docker-Composed和Kubernetes技术解析

Docker 是一款基于操作系统的沙盒技术,允许开发者轻松地打包和运行应用程序。它的核心技术包括Linux Namespaces、CGroup和UnionFS,这些技术组合为Docker提供了资源隔离和文件系统独立性,使得容器之间能够像运行在物理机器上一样互不影响。每个容器都有自己的网络接口和根目录,通过 Namespaces技术实现资源隔离,而CGroup则负责管理容器的CPU、内存等资源使用。

Docker-Compose

Docker-Compose是一种单节点编排技术,适用于将多个容器组织起来运行。它像是一位工作人员,将杂乱的集装箱整理整齐,每个集装箱作为一个单独的服务运行。而Docker-Compose的主要局限在于仅支持单节点编排,在分布式环境中难以应用。然而,在开发环境中,当需要多个服务协同工作时(例如数据库和前端服务),Docker-Compose仍然是一个高效且简便的选择,可以显著提升部署效率。

Kubernetes

Kubernetes是目标reece的企业级编排平台,提供服务部署、弹性管理和自我修复能力。它与Docker相比不直接打包应用,而是将Docker作为容器运行时组件,在更复杂的生产环境中提供应用规划、更新和维护等高级功能。Kubernetes的核心目标是确保容器化应用能够高效、可靠地运行。

Kubernetes的核心功能

  • 服务发现和负载均衡:通过Service资源实现,基于iptables规则。
  • 服务自动装箱:Scheduler调度器根据资源规格自动分配容器。
  • 容器存储编排:与Docker-Compose类似,通过YAML文件管理存储和服务同步。
  • 容器故障恢复:自动将停机或失效的容器转移到健康节点。
  • 自动发布和回滚:支持蓝绿部署和雷东回滚策略。
  • 配置和密钥存储:ConfigMap实现配置管理,无需修改代码即可部署。
  • 服务水平伸缩:根据CPU和内存使用情况自动调整Pod数量。
  • 批量执行和守护进程任务:Job和DaemonSet资源类型支持批量任务和节点守护功能。
  • 探针:提供存活和就绪探测,支持多种协议检测服务状态。
  • Kubernetes架构

    Kubernetes基于两层架构设计,包括主节点(Master)和计算节点(Node)。Master负责接收命令并分发给节点,节点则负责运行容器任务。Master主要包含APIServer、Scheduler和Controller等组件,而Node节点运行Kubelet、kube-proxy和容器运行时等组件。

    节点组件

  • Kubelet:负责Pod的生命周期管理,接收Master的命令并调度任务。
  • kube-proxy:实现Service的负载均衡和IP地址分发。
  • 容器运行时:负责容器的镜像管理和运行环境配置。
  • 插件:支持存储和网络插件,扩展功能。
  • Kubernetes资源对象

    Kubernetes提供多种资源对象,包括:

    • 资源对象:Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、水平Pod自 Scaling。
    • 配置对象:Namespace、Service、Secret、ConfigMap、Ingress、Label、ServiceAccount。
    • 存储对象:Volume、PersistentVolume及第三方插件(如NFS、ceph)。
    • 策略对象:SecurityContext、ResourceQuota、LimitRange。

    Pod执行流程

    一个Pod的执行过程通常包括以下步骤:

  • 用户提交Pod定义文件至API Server。
  • Scheduler调度器根据资源规格调度Pod至适当节点。
  • Kubernetes通过 kubelet启动Pod并配置容器运行环境。
  • 集群内部组件通过API Server进行交互,确保Pod的稳定运行。
  • Pod结构与网络

    Pod具有独立的IP地址和hostname,与其他Pod之间隔离,但内部容器之间可通过localhost通信。对于外部访问,Pod需要通过宿主机的端口和网络接口进行映射,通常由kube-proxy负责。

    Service负载均衡

    Service资源通过iptables和IPVS实现负载均衡,可将请求分发至多个Pod。与Pod不同,Service能够自动发现Pod的变化,并通过标签选择器和endpoints维护映射关系。

    Deplyment操作演示

  • 部署查看

    kubectl get node
  • 部署应用

    kubectl apply -f nginx_deploy.yaml

    操作示例文件:

    apiVersion: apps/v1beta1kind: Deploymentmetadata:  name: nginx-deploymentspec:  replicas: 2  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: docker.hub.com/ops/openresty:1.15.8.2-6        ports:         - containerPort: 80
  • 扩容验证:在nginx_deploy.yaml中调整replicas字段为4,并重新应用:

    kubectl apply -f nginx_deploy.yaml

    查看部署状态:

    kubectl describe deployment nginx-deployment
  • 通过以上操作,可以清晰地看到Kubernetes如何管理Pod和服务,确保应用的高效运行。

    上一篇:Kubernetes学习总结(18)—— Kubernetes 容器网络
    下一篇:Kubernetes学习总结(16)—— Kubernetes 实战之部署 Redis 集群

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月22日 06时46分59秒