访问一直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检测步骤
- 检测ingress-nginx的pod和service是否正常
- 检测gin项目的pod和service是否正常,可以curl请求测试
- 检测ingress.yaml配置的服务名是否一致
- 检查 ingress-nginx-controller 日志是否有报错日志