kubernetes ingress-nginx 5分钟部署好,80端口暴露服务,不借助负载均衡

安装:

先下载:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/cloud/deploy.yaml

如果打不开,请使用国内源。

修改里面Service name: ingress-nginx-controller 的一段,找到type:

type 改为NodePort ,因为你没有LoadBalance可测试。
type: NodePort

然后:

kubectl apply -f deploy.yaml

查看ingress-controllor

kubectl get pods --namespace=ingress-nginx

执行这个命令:

kubectl wait --namespace ingress-nginx \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/component=controller \
  --timeout=120s

出现:condition met
安装完毕

查看服务、出现如下:

# kubectl get service ingress-nginx-controller --namespace=ingress-nginx
NAME                       TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                 AGE
ingress-nginx-controller   NodePort   10.103.21.218   <none>        80:32317/TCP,443:32337/TCP   13m

记住这里的端口:32317 (实例)

创建deploy 和service:

kubectl create deployment demo --image=httpd --port=80
kubectl expose deployment demo

创建ingress:

kubectl create ingress demo --class=nginx \
  --rule www.demo.io/=demo:80

查看你的ingress controllor 所在node:

ingress-nginx-controller-776cdbb5d4-skxtw   1/1     Running     5          19m
[root@master1 leon]# kubectl get pod -n ingress-nginx -o wide
NAME                                        READY   STATUS      RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
ingress-nginx-admission-create-bb8p8        0/1     Completed   0          19m   10.244.1.15   node1   <none>           <none>
ingress-nginx-admission-patch-796mz         0/1     Completed   1          19m   10.244.1.16   node1   <none>           <none>
**ingress-nginx-controller-776cdbb5d4-skxtw   1/1     Running     5          19m   10.244.2.18   node2**   <none>           <none>

注意:是Node2,那么浏览器访问的IP,就是NODE2的ip(实例:192.168.132.52)

则在你的浏览器所在机器hosts表增加记录:

192.168.132.52 www.demo.io

然后用浏览器访问:
http://www.demo.io:32317,就可以看到“It works!”

表示成功。

对外暴露端口改成80

修改下载下来的deploy.yaml 还是 name: ingress-nginx-controller ,这一段。
增加 NodePort:80 和NodePort:443

如下:

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.1.2
    helm.sh/chart: ingress-nginx-4.0.18
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  externalTrafficPolicy: Local
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - appProtocol: http
    name: http
    port: 80
    nodePort: 80
    protocol: TCP
    targetPort: http
  - appProtocol: https
    name: https
    port: 443
    nodePort: 443
    protocol: TCP
    targetPort: https
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  type: NodePort

这样直接执行,会出现错误:nodePort: Invalid value valid ports is 30000-32767,
是因为k8s的node节点的端口默认被限制在30000-32767的范围,

先修改kube的默认配置:

vi /etc/kubernetes/manifests/kube-apiserver.yaml

在spec.containers.command的最后面加上 --service-cluster-ip-range 这一行,如下内容

- --service-node-port-range=1-65535

最后 重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

然后再执行:

kubectl apply -f deploy.yaml

然后打开浏览器查看:

在这里插入图片描述

搞定!

Ingress-Nginx是一种Kubernetes中的Ingress控制器,用于管理入站流量,并将流量路由到Kubernetes集群中的服务。以下是部署Ingress-Nginx的步骤: 1. 安装Ingress-Nginx控制器。 使用以下命令安装控制器: ``` kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml ``` 该命令将部署Ingress-Nginx维护的最新版本的控制器。 2. 验证控制器安装。 使用以下命令验证控制器是否已成功安装: ``` kubectl get pods -n ingress-nginx ``` 如果控制器已成功安装,则应看到类似于以下内容的输出: ``` NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-8gmgc 0/1 Completed 0 2m ingress-nginx-admission-patch-q8v2m 0/1 Completed 0 2m ingress-nginx-controller-5b4bcf79d8-9qz7j 1/1 Running 0 2m ``` 3. 部署应用程序。 使用以下命令部署您的应用程序: ``` kubectl apply -f your-application.yaml ``` 该命令将使用您的应用程序配置文件中指定的服务端口部署应用程序。 4. 部署Ingress资源。 使用以下命令部署Ingress资源: ``` kubectl apply -f your-ingress.yaml ``` 该命令将使用您的Ingress配置文件中指定的规则和路径将流量路由到您的应用程序。 5. 验证Ingress是否生效。 使用以下命令验证Ingress是否已成功生效: ``` kubectl get ingress ``` 如果Ingress已成功生效,则应看到类似于以下内容的输出: ``` NAME HOSTS ADDRESS PORTS AGE your-ingress * 192.168.50.10 80 2m ``` 这意味着您的应用程序现在可以通过Ingress访问。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值