k8s使用helm安装ingress-nginx,部署gin项目

访问一直404

通过kind安装k8s

测试环境用用就行,搭配ingress暴露80和443就OK了
https://blog.csdn.net/qq_39272466/article/details/131413943?spm=1001.2014.3001.5502

安装helm

Linux安装

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

或者

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

你去看这篇文章安装

https://helm.sh/zh/docs/intro/install/

通过helm安装ingress-nginx

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  --set controller.service.type=NodePort \
  --set controller.service.nodePorts.http=30080 \
  --set controller.service.nodePorts.https=30443

如何你想暴露端口就改成NodePort

kubectl patch svc ingress-nginx-controller -p '{"spec": {"type": "NodePort"}}' -n ingress-nginx

其他安装方式你看这篇文章

https://kubernetes.github.io/ingress-nginx/deploy/#quick-start

查看ingress-nginx

kubectl get pod,svc -n ingress-nginx

在这里插入图片描述

你要检查 READY STATUS是否启动了,没启动就有异常需要去看日志

kubectl logs ingress-nginx-controller-5fcb5746fc-8b7tp -n ingress-nginx

在这里插入图片描述

创建dev命名空间

kubectl create ns dev

vim粘贴yaml文件格式问题解决

:set paste

启动gin项目的pod和service

deploy.yaml

apiVersion: apps/v1 # api 版本
kind: Deployment # 资源对象类型
metadata: # Deployment 元数据
  name: hello-gin # 对象名称
  namespace: dev
spec: # 对象规约
  selector: # 选择器,作用:选择带有下列标签的Pod
    matchLabels: # 标签匹配
      app: hello-gin # 标签KeyValue
  template: # Pod 模版
    metadata: # Pod元数据
      labels: # Pod 标签
        app: hello-gin # Pod 标签,与上述的 Deployment.selector中的标签对应
    spec: # Pod 对象规约
      containers: # 容器
        - name: hello-gin # 容器名称
          image: jxlwqq/hello-gin:latest # 镜像名称:镜像版本
          resources: # 资源限制
            limits: # 简单理解为max资源值
              memory: "128Mi"
              cpu: "500m"
            requests: # 简单理解为min资源值
              memory: "128Mi"
              cpu: "500m"
          ports: # 端口
            - containerPort: 8080 # 端口号
---
apiVersion: v1 # api 版本
kind: Service # 对象类型
metadata: # 元数据
  name: hello-gin-svc # 对象名称
  namespace: dev
spec: # 规约
  selector: # 选择器
    app: hello-gin # 标签选择器,与 Pod 的标签对应
  ports:
    - port: 8080 # Service 端口号
      targetPort: 8080 # Pod 暴露的端口号

ingress.yaml

apiVersion: networking.k8s.io/v1 # api 版本
kind: Ingress # 对象类型
metadata: # 元数据
  name: hello-gin-ingress # 对应名称
  namespace: dev
spec: # 规约
  ingressClassName: nginx
  rules: # 规则
    - host: test.gin.com
      http:
        paths: # 路径
          - path: /
            pathType: Prefix
            backend: # 后端服务
              service: # 服务
                name: hello-gin-svc # service 名称
                port:
                  number: 8080 # 端口号              

启动

kubectl apply -f deploy.yaml
kubectl apply -f ingress.yaml

查看一下配置

kubectl get pod,svc -n dev
kubectl describe ing -n dev

在这里插入图片描述
在这里插入图片描述

看到这个没有,一定要配置(ingressClassName: nginx)这个错误我找了好久原因

配置hosts

echo 集群ip test.gin.com >> /etc/hosts

访问测试

curl http://test.gin.com:32089/hello

访问要是返回404检测步骤

  1. 检测ingress-nginx的pod和service是否正常
  2. 检测gin项目的pod和service是否正常,可以curl请求测试
  3. 检测ingress.yaml配置的服务名是否一致
  4. 检查 ingress-nginx-controller 日志是否有报错日志
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值