K8S部署Nginx-多服务配置,新手必看

本文详细介绍了如何在Kuboard上使用Kubernetes部署Nginx,包括选择集群和命名空间、创建Deployment、配置容器、存储挂载、服务路由等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Nginx部署

1、打开 Kuboard 首页,如下图所示:

2、选择要部署的集群,我这边选择default

3、选择要部署的空间,空间可以自定义,如果要做分组的话,应用类型可以建一个Application的命名空间,

代码相关的服务可以建一个Server的命名空间,不过不强制,可以自定义名称,我这边选择Application命名空间

4、进入命名空间,鼠标悬浮至页面顶部的常用操作按钮,点击创建工作负载

5、页面基本信息页面,点击部署(Deployment),输入填写基本信息,工作负载层的下拉框选择对应服务所属的负载层,本次Ngxin属于展现层

此选项这是作为应用列表的分组用,不用太过担心,此页面值需选择工作负载类型、填写工作负载名称即可,其余无需填写

6、填写完成之后,点击容器信息Tab,点击添加工作容器按钮

填写容器名称、容器镜像、容器端口等信息
字段名填写内容备注
容器名称nginx
镜像nginx:1.7.9docker容器中nginx的镜像版本,若无需指定版本,默认拉取最新格式:nginx:latest
抓取策略ifNotPresent(本地不存在时拉取镜像)

因为K8S依赖了机器的docker容器,如果选择本地不存在再拉取镜像,则是先寻找docker中是否有匹配的镜像,

如果有的话则直接使用,没有的话再执行docker的镜像拉取操作

容器端口TCP : 80该容器组监听 TCP 80 端口,nginx默认监听80端口

7、容器信息配置完成之后,点击存储挂载Tab

大多数时候我们的容器需要使用到宿主机的文件,所以需要将文件挂载至容器中
选择hostPath方式,直接指定宿主机文件路径即可

8、存储挂载配置完成之后,点击服务/应用路由Tab

填写对应服务端口、节点端口、目标端口
字段名填写内容备注
port8080此端口可以自定义填写,一般填写服务对应的端口
nodePort  30010服务在K8S节点的端口,此端口作为后续访问的端口,不同K8S有不同的阶段端口,本环境K8S节点端口范围30000-32767
targetPort80

服务在宿主机上实际的端口,参考步骤6的容器端口,相当于是将节点端口与目标端口做了映射,对外暴露节点端口,再由节点端口转发至目标端口

9、保存

点击 保存
点击 应用
点击 完成
此时可查看到该应用的部署结果,如下图所示:
点击服务Tab
此时,我们在浏览器中输入IP+端口,就能打开对应的页面
至此,Nginx部署完成

<think>嗯,用户这次明确想了解kubectl的具体操作教程,重点在部署服务发布、Pod管理和扩缩容四大核心功能。从用户提问方式看,ta应该是有Kubernetes基础概念但缺乏实操经验,需要手把手的命令示例。之前提供的站内引用其实很有价值:引用[3]直接提到了kubectl创建Deployment的关键作用,引用[4]展示了带参数的真实运维命令格式,这些都是可以融入教程的实例。不过用户不需要解决证书问题这类进阶内容,得过滤掉。教程设计要考虑三点:一是须按操作顺序编排,从创建集群到发布完整链路;二是每个命令都要解释关键参数,比如nodePort的端口范围限制;三是给出检查操作的验证命令,像kubectlgetsvc这种,让用户即时看到效果。扩缩容部分特别重要,用户专门提到scaling。除了基础的replicas参数,应该补充HPA的配置示例,这样当ta需要弹性伸缩时能直接迁移使用。故障排查指令如describe和logs也要准备,新手最容易卡在pod启动失败这类问题上。最后生成的参考资料链接要精选,优先保留引用[1][2]的官方文档索引。用户明显偏向实用主义,那些理论组件说明可以折叠进注释区。</think> 以下是通过`kubectl`管理Kubernetes集群的核心操作教程,包含部署服务发布、Pod管理及扩缩容的完整流程: --- ### **1. 部署应用 (Deployment)** #### 创建Deployment ```bash kubectl create deployment nginx-app --image=nginx:1.25 --replicas=3 ``` - `--image`:指定容器镜像 - `--replicas`:初始Pod副本数 - **验证部署**:`kubectl get deployments -o wide` #### 更新Deployment ```bash kubectl set image deployment/nginx-app nginx=nginx:1.26 # 滚动升级镜像 kubectl rollout status deployment/nginx-app # 查看升级状态 ``` --- ### **2. 服务发布 (Service)** #### 创建NodePort服务(外部访问) ```bash kubectl expose deployment nginx-app --name=nginx-svc --port=80 --type=NodePort ``` - `--port`:服务端口 - `--type=NodePort`:通过节点IP+端口访问(范围:30000-32767) - **获取访问地址**: ```bash kubectl get svc nginx-svc # 输出示例:10.96.xx.xx:80 和 NodePort 32651/TCP # 访问方式:http://<节点IP>:32651 ``` #### 创建LoadBalancer服务(云环境) ```bash kubectl expose deployment nginx-app --port=80 --type=LoadBalancer ``` --- ### **3. Pod管理** #### 查看Pod状态 ```bash kubectl get pods -l app=nginx-app # 按标签过滤 kubectl describe pod <pod-name> # 查看详细事件 ``` #### 进入Pod调试 ```bash kubectl exec -it <pod-name> -- /bin/sh # 进入容器Shell kubectl logs <pod-name> --tail=50 -f # 实时查看日志 ``` #### 删除Pod ```bash kubectl delete pod <pod-name> # 单Pod删除 kubectl delete pods -l app=nginx-app # 按标签批量删除 ``` --- ### **4. 扩缩容操作** #### 手动扩缩容 ```bash kubectl scale deployment/nginx-app --replicas=5 # 扩展到5个副本 kubectl scale deployment/nginx-app --replicas=1 # 缩减到1个副本 ``` #### 自动扩缩容(HPA) ```yml # 创建HPA策略(CPU利用率超过50%时扩容,最多10副本) kubectl autoscale deployment nginx-app --cpu-percent=50 --min=1 --max=10 ``` - **验证HPA**:`kubectl get hpa` --- ### **5. 配置文件管理(声明式API)** #### 通过YAML文件部署 ```yml # nginx-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-app spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 --- # nginx-svc.yaml apiVersion: v1 kind: Service metadata: name: nginx-svc spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 ``` ```bash kubectl apply -f nginx-deploy.yaml # 应用配置 kubectl apply -f nginx-svc.yaml ``` --- ### **故障排查命令** ```bash kubectl describe pod <pod-name> # 检查Pod事件 kubectl get events --sort-by=.metadata.creationTimestamp # 集群事件排序 kubectl top pods # 查看Pod资源占用 ``` --- ### **参考资料** 1. [kubectl 官方命令手册](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands)[^1][^2] 2. [Deployment 管理最佳实践](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)[^3] 3. 调试技巧: ```bash kubectl get pods --v=6 # 查看API请求详情(日志级别1-9) ``` > 提示:生产环境建议使用`kubectl apply -f`管理配置文件,避免命令操作丢失历史记录[^3]。 --- ### 相关问题 1. **如何持久化存储Pod中的数据?** (涉及`PersistentVolume`和`PersistentVolumeClaim`配置) 2. **如何通过Ingress实现域名访问服务?** (需配置Ingress Controller + Ingress规则) 3. **kubectl如何管理多集群环境?** (使用`kubectl config use-context`切换上下文) 4. **Pod启动失败常见原因及排查步骤?** (镜像拉取失败、资源不足、配置错误等场景分析)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乃真卧龙凤雏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值