千家信息网

怎么实现Kubernetes应用部署

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"怎么实现Kubernetes应用部署",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么实现Kubernetes应用部署"吧!概述当
千家信息网最后更新 2026年11月01日怎么实现Kubernetes应用部署

这篇文章主要讲解了"怎么实现Kubernetes应用部署",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么实现Kubernetes应用部署"吧!

概述

当希望在Kubernetes中部署应用程序时,通常要定义三个组件:

  • 部署(Deployment):这是创建Pod应用程序副本的方法

  • 服务(Service):将流量调度到Pods的内部负载平衡器

  • 入口(Ingress):描述流量如何从群集外部流到服务。

直观图示

首先,在Kubernetes中,应用程序应该通过两层负载均衡对外公开:内部负载均衡器和外部负载均衡器。

其次,内部的负载均衡器又被称为服务,而外部的负载均衡器称为入口。

最后:Pods不会直接部署。相反,Deployment会在其上创建Pods和观察者。

应用YAML示例

一个简单的Hello World应用程序为例,该应用程序的YAML如下所示:

apiVersion: apps/v1

kind: Deployment

metadata:

name: my-deployment

labels:

track: canary

spec:

selector:

matchLabels:

any-name: my-app

template:

metadata:

labels:

any-name: my-app

spec:

containers:

- name: cont1

image: learnk8s/app:1.0.0

ports:

- containerPort: 8080

---

apiVersion: v1

kind: Service

metadata:

name: my-service

spec:

ports:

- port: 80

targetPort: 8080

selector:

name: app

---

apiVersion: networking.k8s.io/v1beta1

kind: Ingress

metadata:

name: my-ingress

spec:

rules:

- http:

paths:

- backend:

serviceName: app

servicePort: 80

path: /

该定义很长,不好发现组件之间的相互联系。

比如下这些问题:

什么时候应该使用端口80,什么时候应该使用端口8080?

为了避免冲突,是否应要为每个服务都创建一个新端口?

标签名称重要吗?各处命名是否都应该一致?

要回答这些问题,请接着往下看:

连接部署和服务

实际上服务和部署没有直接连接,服务跳过部署直接指向Pod。因此,要注意的实际上是Pod和服务之间的相互关系。

关键点

他们关系中要注意:

服务选择器应至少与Pod的一个标签匹配;

服务的目标端口(targetPort)应该与Pod内容器的容器端口(containerPort)匹配;

服务端口可以是任何数字。多个服务也可以使用同一端口,因为它们分配了不同的IP地址。

直观图示

1. 考虑服务下Pod公开的端口

2.创建Pod时,应为Pod中的每个容器定义端口containerPort。

3.创建服务时,可以定义端口和目标端口。但是只能用目标端口连接容器

4.目标端口和容器端口应该匹配。

5. 如果容器公开了端口3000,则targetPort应该与该数字匹配。

如果查看YAML,则标签和ports/targetPor应该匹配:

常见问题

那么部署顶部track: canary标签是干什么的?

需要应该匹配吗?

部署的track: canary标签属于部署,服务选择器没有使用它来做流量调度。所以这个标签完全可以删除,或者为它分配其他值。

matchLabels选择器呢?

它必须与Pod标签匹配,部署用它来跟踪Pod。

Pod配置修改,如何测试?

我们可以使用以下命令检查Pod的标签是否正确:

kubectl get pods --show-labels

对于属于多个应用程序的Pod使用:

kubectl get pods --selector any-name=my-app --show-labels

其中any-name = my-app表示标签any-name:my-app。

或者可以直接连接到Pod:可以使用kubectl port-forward命令连接到服务并测试连接。

kubectl port-forward service/3000:80

其中,service/是服务的名称,比如示例中为" my-service";3000是希望在计算机上打开的端口;80是"服务"在"端口"字段中公开的端口。

如果可以连接,则说明设置正确。如果不能,则很可能配置了标签,或者端口不匹配。

服务和入口连接

应用程序发布的最后一个一步是配置Ingress入口。

关键点

入口必须知道如何检索服务,然后检索Pod并将流量调度到它们。入口按名称和公开的端口来检索服务。

在入口和服务中应该匹配两件事:

  • Ingress的servicePort应该与Service的端口匹配

  • Ingress的serviceName应该与Service的名称匹配

直观图示

首先,已经该服务发布了一个端口。

其次,入口中有一个名为服务端口(servicePort)的字段。

在次,服务端口和入口服务端口应始终匹配。

最后,如果为服务分配了端口80,也应将其servicePort更改为80。

先示例配置要注意的字段:

常见问题

如何测试入口的功能?

可以对kubectl port-forward使用与之前相同的策略,但是应该连接到Ingress控制器,而不是连接到服务。

首先,使用以下命令检索Ingress控制器的Pod名称:

kubectl get pods --all-namespaces

对确认的Ingress Pod(可能在不同的命名空间中)执行下面命令:

kubectl describe pod nginx-ingress-controller-6fc5bcc --namespace kube-system|grep Ports

用得到端口连接到Pod:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

这样访问计算机上的端口3000时,请求都会被转发到Ingress控制器Pod上的端口80。你访问localhost:3000,就能看到发布的应用程序。

感谢各位的阅读,以上就是"怎么实现Kubernetes应用部署"的内容了,经过本文的学习后,相信大家对怎么实现Kubernetes应用部署这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

端口 服务 应用 入口 标签 应用程序 程序 均衡 名称 容器 问题 命令 流量 目标 均衡器 检索 配置 直观 内容 字段 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 互联网科技工作委员会 互联网科技集团 云电互联网科技 居家互联网科技有限公司 美国互联网前沿科技 科技大学互联网专业好不好 中化能源互联网科技招聘 花神(南京)互联网科技有限公司 苏州铭阳互联网科技有限公司 民营互联网公司国防科技 内蒙古九一互联网科技 互联网科技如何创业 黑云互联网科技有限公司 互联网领先科技宣传片 银川新华互联网科技学校是国营吗 北京军民互联网科技公司 好易买互联网科技 互联网领先科技成果宣传视频 株洲百竞科技的互联网营销顾问 互联网科技公司电话 国外互联网科技网站 江苏南京365互联网科技 深圳前海聚择互联网科技有限公司 成都铂石互联网科技做什么的 深圳育鹏互联网科技有限公司招聘 燊美集互联网科技有限公司 中天科技中国工业互联网 重庆科技产业互联网有哪些 六子台科技互联网展会
0