总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(服务治理与网络访问)

简介: 总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(服务治理与网络访问)

前提介绍

Kubernetes,亦被称为K8s,是业界公认的容器编排巨擘,以其卓越的能力简化了容器化应用的部署、扩展和管理流程。通过其强大的功能,Kubernetes不仅提升了应用的可靠性和可伸缩性,还优化了资源利用率,为开发者和运维人员提供了更加高效、灵活的容器运行环境。

在传统的应用部署模式中,不同环境间的基础设施与配置差异构成了巨大的挑战,使得跨环境部署变得困难重重。然而,Kubernetes的出现彻底改变了这一局面。它通过构建一个统一的容器编排平台,巧妙地将底层基础设施的复杂性进行了抽象,让开发人员能够摆脱繁琐的环境配置问题。在Kubernetes的助力下,应用程序可以在不同环境中实现一致且高效的部署与管理,这不仅极大地提升了应用的可移植性,更为未来的扩展性奠定了坚实的基础。

文章主旨

本篇文章是学习开发使用k8s的必备工具,提供了对无缝部署管理所需的基本命令的快速访问。让我们将其视为快节奏Kubernetes环境中的必备指南,以提高生产力,减少错误,并确保在复杂任务中的高效导航。不仅包含了Kubernetes中最常用的命令,还提供了针对特定任务的实用提示和最佳实践。无论您是经验丰富的Kubernetes管理员还是初学者,这份速查表都将成为您日常工作中的宝贵资源。

通过本系列文章,您可以快速了解如何创建和管理部署(Deployments)、服务(Services)、持久存储(Persistent Storage)以及其他Kubernetes资源。

Services和Networking

Service 为一组 pod 提供了稳定的访问端点,而 network 则负责构建这些 pod 之间高效通信的机制。

网络组件之间交互

网络组件间的交互是一个复杂而关键的过程,它涉及到信息的传递和组件间的协作。为了确保这种交互的顺畅进行,需要精心设计和实现组件间的接口和通信协议。下图是一个K8s框架的Node以及内部的Pod之间的网络调用和交互,其中包含了很多隐藏信息:服务发现、服务调用等。



同时,网络的安全性、稳定性和可扩展性等因素也必须得到充分考虑,以确保整个系统的正常运行和可靠性。因此,对于网络组件间的交互,我们需要进行全面的规划、设计和测试,以优化其性能和提升可靠性。

创建Service组件

利用kubectl命令和指定的YAML文件(service-definition.yaml),可以便捷地创建和部署服务。

yaml

复制代码

apiVersion: v1
kind: Service
metadata:
  name: demo-service
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

这个 YAML 文件定义了一个名为 demo-service 的 Kubernetes Service,它选择所有带有 app=demo 标签的 Pods,并将外部流量从集群的 80 端口转发到这些 Pods 的 8080 端口。

重要参数解析

  • protocol: TCP:这指定了使用的协议是 TCP。Kubernetes 支持 TCP 和 UDP 协议。
  • port: 80:这是 Service 的集群内部端口,也就是集群内的其他 Pods 或 Services 可以通过这个端口访问此 Service。
  • targetPort: 8080:这是实际转发到选定 Pods 的端口。这意味着,尽管外部世界可能通过端口 80 访问此 Service,但流量实际上会被转发到 Pods 的 8080 端口。
  • type: ClusterIP:意味着 Service 将有一个仅在集群内部可用的 IP 地址。外部流量无法直接访问它,除非通过其他方式(如 LoadBalancer、NodePort 等)进行转发。

执行指令创建

执行命令kubectl apply -f service-definition.yaml时,Kubernetes将读取YAML文件中的配置信息,并据此在集群中创建或更新对应的服务资源。

管理和操作Services

  • 列出默认命名空间中的所有服务:kubectl get service
  • 删除服务: kubectl delete service <service_name>
  • 将部署作为服务公开: kubectl expose deployment <deployment_name> --port=<external_port>

服务发现

  • 发现服务详细信息: kubectl describe service <service_name>
  • 读取服务的 ClusterIP: kubectl get service <service_name> -o jsonpath='{.spec.clusterIP}'

快速指令列表



Service组件的ClusterIP和NodePort模式

在Kubernetes(k8s)中,Service是一个核心概念,它允许你将一组Pod(运行应用的容器组)暴露为一个统一的、抽象的网络服务。这个Service可以被集群内部或外部的其他应用访问。总体包含了三种模式,分别为ClusterIP和NodePort、LoadBalancer。

ClusterIP(集群内部访问)

  • ClusterIP是Kubernetes Service的默认类型。当你创建一个Service时,Kubernetes会自动为它分配一个唯一的IP地址,这个IP地址仅在集群内部可见和可访问。
  • IP地址与Service关联的后端Pods的端口(称为targetPort)绑定。集群内的其他Pods可以通过ClusterIP:ServicePort来访问这个Service,进而访问到后端Pods。

由于ClusterIP仅在集群内部可见,如果你希望从集群外部访问这个Service,你需要使用其他方式,如NodePort或LoadBalancer。

创建Cluster-IpService组件

配置定义了一个名为clusterip-service的ClusterIP服务,它专门选择那些带有app: demo标签的Pods。此服务在集群内部将80端口公开,以便其他Pods或Service能够访问,并将接收到的流量智能地路由到对应Pods的8080端口。

yaml

复制代码

apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

NodePort(集群外部访问)

NodePort是Kubernetes Service的另一种类型,它允许你将Service暴露给集群外部。

  • 当一个Service被设置为NodePort类型时,Kubernetes会在每个Node(节点)上打开一个静态端口(NodePort)。这个端口是外部可访问的,并且会路由到Service的ClusterIP。
  • 因此,外部客户端可以通过<NodeIP>:<NodePort>来访问这个Service。这种机制允许外部流量进入集群,然后通过ClusterIP路由到后端Pods。
创建NodePort-service组件

yaml

复制代码

apiVersion: v1
kind: Service
metadata:
  name: nodeport-service
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: NodePort

NodePort通常用于开发、测试或某些不需要高度可用性的生产环境。如果你需要一个更加健壮的外部访问方案,你可能会考虑使用LoadBalancer类型的Service。

LoadBalancer(集群外部访问)

定义了一个名为 loadbalancer-service 的 LoadBalancer 服务,其专门筛选带有 app: demo 标签的 Pods。

yaml

复制代码

apiVersion: v1
kind: Service
metadata:
  name: loadbalancer-service
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

此服务将端口暴露给外部访问,而在云环境中,它会自动配置一个与云环境相匹配的负载均衡器。这个负载均衡器负责将接收到的流量智能地分配到相应的 Pods 上,确保服务的高可用性和可扩展性。通过这样的配置,我们能够在云环境中轻松实现负载均衡和服务发现,提升应用的可访问性和性能。

查看日志快速指令

为了帮助大家更高效地进行Kubernetes(简称K8s)的日常管理和故障排查,整理了一份关于K8s日志查询的指令快速列表。这些指令都是在日常工作中经常使用的,希望能为大家带来便利。


下篇预告

在即将发表的文章中,我们将进一步聚焦于Configuration和Secrets相关的核心组件,进行深入的介绍、分析和阐释。通过这篇文章,读者将能够更全面地了解这些组件的功能、特点以及它们在整体架构中的重要性。我们期待通过分享专业知识和经验,为读者提供更深入、更全面的了解和掌握这些关键组件的机会。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
377 5
|
10月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
1013 3
|
11月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
11月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1277 33
|
应用服务中间件 nginx Docker
外部访问容器
外部访问容器
245 1
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
存储 虚拟化 Docker
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
9月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
715 1

推荐镜像

更多