Kubernetes技术详解:从基础到核心组件

需积分: 10 8 下载量 167 浏览量 更新于2024-07-15 收藏 3.6MB PDF 举报
"k8s技术分享v1.pdf - Kubernetes基础使用教程" Kubernetes,简称k8s,是一种开源的容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。这个技术分享主要围绕k8s的基础知识、架构演进、核心组件以及运行原理展开。 在架构演进的阶段,k8s从单体服务到微服务,再到容器化,展示了现代应用架构的发展历程。SpringCloud,主要支持Java应用的微服务架构,而k8s则更加通用,支持各种语言和技术栈的异构环境。 k8s与SpringCloud相比,k8s提供了更广泛的功能,包括服务发现、负载均衡、容错和自动扩展等。它解决了微服务架构中的一些关键问题,如服务间的通信、配置管理、健康检查等。 kubernetes概览部分,我们了解到k8s的核心价值在于它可以做什么。它能够管理容器化的应用程序,提供高可用性,确保服务的持续性和一致性。k8s的基本概念包括: 1. Pod:作为k8s中的基本部署单元,Pod包含一个或多个紧密相关的容器,它们共享存储和网络资源。 2. Deployment:用于定义和管理Pod的副本集,可以实现应用的滚动更新和回滚。 3. StatefulSet:用于管理有状态的应用,如数据库,确保Pod的稳定标识和数据持久化。 4. DaemonSet:确保每个节点上都运行一个或多个Pod,通常用于运行系统守护进程。 5. Job:用于执行一次性任务,如后台批处理作业。 在服务层面,k8s的Service定义了一组Pods的逻辑集合,并提供一种方法来与这些Pods交互。Service有多种类型,如ClusterIP(内部访问)、NodePort(通过节点端口暴露服务)、LoadBalancer(公有云负载均衡器)和ExternalName(CNAME记录映射)。 Ingress是k8s中的另一个重要组件,用于外部访问服务的路由规则。Ingress控制器如Nginx、Traefik等,提供URL级别的控制,使得在一个公共IP地址下可以公开多个服务。 Kubernetes的运行离不开kubectl命令行工具,通过它我们可以交互式地管理集群,比如创建、更新和删除资源。此外,通过yaml文件可以定义和配置k8s资源对象,实现自动化部署。 最后,这个分享还提到了将SpringBoot应用程序部署到k8s的实践,以及如何通过k8s进行应用的管理和运维。 这份k8s技术分享详细介绍了k8s的架构、组件和使用方式,对于理解k8s的基础知识和实际应用非常有帮助。

error: error validating "ingress.yaml": error validating data: [ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[0]): missing required field "pathType" in io.k8s.api.networking.v1.HTTPIngressPath, ValidationError(Ingress.spec.rules[0].http.paths[1].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[1].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[1]): missing required field "pathType" in io.k8s.api.networking.v1.HTTPIngressPath, ValidationError(Ingress.spec.rules[0].http.paths[2].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[2].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[2]): missing required field "pathType" in io.k8s.api.networking.v1.HTTPIngressPath, ValidationError(Ingress.spec.rules[0].http.paths[3].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[3].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[3]): missing required field "pathType" in io.k8s.api.networking.v1.HTTPIngressPath]; if you choose to ignore these errors, turn validation off with --validate=false

2023-06-07 上传