ingress使用80和443对外提供服务

1.搭建ingress环境

# 创建文件夹
[root@k8s-master01 ~]# mkdir ingress-controller
[root@k8s-master01 ~]# cd ingress-controller/# 获取ingress-nginx,本次案例使用的是0.30版本
[root@k8s-master01 ingress-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
[root@k8s-master01 ingress-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
# 修改mandatory.yaml文件中的仓库(如果网络比较好就不用修改)
# 修改quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
# 为quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
# 创建ingress-nginx# 修改service-nodeport.yaml,在其中添加nodePort端口,如果不指定,
它会默认指定一个30000+的端口,这样的话,在ingress的前面就还需使用nginx来
做反向代理,不然访问域名的时候就要带端口访问,看起来不友好spec:type: NodePortports:- name: httpport: 80targetPort: 80nodePort: 80  # 添加这行,指定80端口,不指定会默认给30000+protocol: TCP- name: httpsport: 443targetPort: 443nodePort: 443   # 添加这行,指定443端口,不指定会默认给30000+protocol: TCP# 然后创建(这里会报一个错,下面有解决方法)
[root@k8s-master01 ingress-controller]# kubectl apply -f ./# 查看ingress-nginx
[root@k8s-master01 ingress-controller]# kubectl get pod -n ingress-nginx
NAME                                           READY   STATUS    RESTARTS   AGE
pod/nginx-ingress-controller-fbf967dd5-4qpbp   1/1     Running   0          12h# 查看service
[root@k8s-master01 ingress-controller]# kubectl get svc -n ingress-nginx
NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.98.75.163   <none>        80:32240/TCP,443:31335/TCP   11h

service-nodeport.yaml报错

在使用kubectl apply -f ./创建Service “ingress-nginx” 的时候会报一个错,如下

The Service "ingress-nginx" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767

解决方法

编辑 kube-apiserver.yaml文件

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

找到 --service-cluster-ip-range 这一行,在这一行的下一行增加 如下内容

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

最后 重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

然后等一分钟左右,再去执行kubectl apply -f service-nodeport.yaml 即可正常创建

2.准备service和pod

创建tomcat-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: dev
spec:replicas: 3selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80---apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-deploymentnamespace: dev
spec:replicas: 3selector:matchLabels:app: tomcat-podtemplate:metadata:labels:app: tomcat-podspec:containers:- name: tomcatimage: tomcat:8.5-jre10-slimports:- containerPort: 8080---apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: dev
spec:selector:app: nginx-podclusterIP: Nonetype: ClusterIPports:- port: 80targetPort: 80---apiVersion: v1
kind: Service
metadata:name: tomcat-servicenamespace: dev
spec:selector:app: tomcat-podclusterIP: Nonetype: ClusterIPports:- port: 8080targetPort: 8080
# 创建
[root@k8s-master01 ~]# kubectl create -f tomcat-nginx.yaml# 查看
[root@k8s-master01 ~]# kubectl get svc -n dev
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
nginx-service    ClusterIP   None         <none>        80/TCP     48s
tomcat-service   ClusterIP   None         <none>        8080/TCP   48s

3.Http代理

创建ingress-http.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: ingress-httpnamespace: dev
spec:rules:- host: nginx.itheima.comhttp:paths:- path: /backend:serviceName: nginx-serviceservicePort: 80- host: tomcat.itheima.comhttp:paths:- path: /backend:serviceName: tomcat-serviceservicePort: 8080
# 创建
[root@k8s-master01 ~]# kubectl create -f ingress-http.yaml
ingress.extensions/ingress-http created# 查看
[root@k8s-master01 ~]# kubectl get ing ingress-http -n dev
NAME           HOSTS                                  ADDRESS   PORTS   AGE
ingress-http   nginx.itheima.com,tomcat.itheima.com             80      22s# 查看详情
[root@k8s-master01 ~]# kubectl describe ing ingress-http  -n devName:             ingress-http
Namespace:        dev
Address:          10.105.74.1
Default backend:  default-http-backend:80 (<none>)
Rules:Host                Path  Backends----                ----  --------nginx.itheima.com   /   nginx-service:80 (10.244.1.63:80,10.244.3.106:80,10.244.3.107:80)tomcat.itheima.com  /   tomcat-service:8080 (10.244.1.62:8080,10.244.1.64:8080,10.244.3.108:8080)
Annotations:
Events:Type    Reason  Age   From                      Message----    ------  ----  ----                      -------Normal  CREATE  16m   nginx-ingress-controller  Ingress dev/ingress-httpNormal  UPDATE  15m   nginx-ingress-controller  Ingress dev/ingress-http# 接下来,在本地电脑上配置host文件(C:\Windows\System32\drivers\etc\hosts),解析上面的两个域名到42.13.172.20 nginx.itheima.com
42.13.172.20 tomat.itheima.com
# 然后,就可以分别访问tomcat.itheima.com  和  nginx.itheima.com 查看效果了

4.Https代理

创建证书,注意名字不要写错了

# 生成证书
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=BJ/L=BJ/O=nginx/CN=itheima.com"# 创建密钥
kubectl create secret tls tls-secret --key tls.key --cert tls.crt

创建ingress-https.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: ingress-httpsnamespace: dev
spec:tls:- hosts:- nginx.itheima.com- tomcat.itheima.comsecretName: tls-secret # 指定秘钥rules:- host: nginx.itheima.comhttp:paths:- path: /backend:serviceName: nginx-serviceservicePort: 80- host: tomcat.itheima.comhttp:paths:- path: /backend:serviceName: tomcat-serviceservicePort: 8080
# 创建
[root@k8s-master01 ~]# kubectl create -f ingress-https.yaml
ingress.extensions/ingress-https created# 查看
[root@k8s-master01 ~]# kubectl get ing ingress-https -n dev
NAME            HOSTS                                  ADDRESS         PORTS     AGE
ingress-https   nginx.itheima.com,tomcat.itheima.com   10.104.184.38   80, 443   2m42s# 查看详情
[root@k8s-master01 ~]# kubectl describe ing ingress-https -n dev
...
TLS:tls-secret terminates nginx.itheima.com,tomcat.itheima.com
Rules:
Host              Path Backends
----              ---- --------
nginx.itheima.com  /  nginx-service:80 (10.244.1.97:80,10.244.1.98:80,10.244.2.119:80)
tomcat.itheima.com /  tomcat-service:8080(10.244.1.99:8080,10.244.2.117:8080,10.244.2.120:8080)
...# 下面可以通过浏览器访问https://nginx.itheima.com 和 https://tomcat.itheima.com来查看了

ingress使用80和443对外提供服务相关推荐

  1. 基于Istio Ingress对外提供服务

    文章目录 创建应用服务 创建VirtualService 通过Ingress Gateway访问服务 分析请求过程 Ingress Gateway Service iptables规则 Envoy配置 ...

  2. Apache ZooKeeper -从初始化到对外提供服务的过程解析( 集群模式 )

    文章目录 流程图 Pre 什么是集群模式? ZooKeeper 集群模式的特点 底层实现原理 程序启动 QuorumPeer 类 Leader 服务器启动过程 Follow 服务器启动过程 小结 流程 ...

  3. Redis进阶-Redis集群 【高可用切换】【cluster-require-full-coverage】集群是否完整才能对外提供服务

    文章目录 Pre 需求 :集群不完整仍然需要对外提供服务 验证 Redis Cluster 架构 高可用切换 Code访问测试 继续停掉8006 ,验证集群是否down掉 Pre Redis进阶-Re ...

  4. 华为云占用443端口_关于XAMPP默认端口80和443被占用的问题

    关于安装xampp-win32-1.8.1-VC9-installer.zip后启动时候报端口80和443被占用的问题解决 xampp-win32-1.8.1-VC9-installer.zip下载地 ...

  5. 启动java服务时刷新缓存_Spring java项目对外提供服务和java进程启动时bean,内部缓存加载的先后关系?...

    Spring java项目对外提供服务有这么几种,一种是web服务,譬如tomcat,一种是RPC服务,譬如dubbo,thrift.总的来说就是对外开放某个/些端口,接收请求. Spring工程项目 ...

  6. XAMPP修改80和443端口及创建虚拟目录

    由于装了IIS,Xampp不能用了.原因是:iis占用了xampp需要的80.443端口.Xampp要修改两个地方才能启动Apache.不然就把模块Mod_SSL注释掉.就可以不用理443这个了. X ...

  7. Nginx只允许域名访问网站,禁止使用IP 访问80,443端口

    转载来源 :Nginx只允许域名访问网站,禁止使用IP 访问80,443端口 :http://www.safebase.cn/article-260225-1.html 摘要: 一.背景 为了避免别人 ...

  8. Kafka follower副本为什么不对外提供服务

    在kafka中,实现副本的目的就是冗余备份,且仅仅是冗余备份,所有的读写请求都是由leader副本进行处理的.follower副本仅有一个功能,那就是从leader副本拉取消息,尽量让自己跟leade ...

  9. 百度沈抖:文心一言将通过百度智能云对外提供服务

    2月17日,在2023 AI+工业互联网高峰论坛上,百度智能云宣布"文心一言"将通过百度智能云对外提供服务,为产业带来AI普惠. 百度集团执行副总裁.百度智能云事业群总裁沈抖表示, ...

最新文章

  1. SpringBoot之CommandLineRunner,预先加载系统数据
  2. Eigen入门之密集矩阵 6 - Reductions, visitors and broadcasting
  3. Linux中常用的操作指令(随时更新)
  4. 11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法
  5. 前端学习(2033)vue之电商管理系统电商系统之通过路由加载报表
  6. android ——多线程编程
  7. 【机器学习与差分隐私代码实现】差分隐私代码实现系列(十二)
  8. SPOJ Can you answer the Queries系列
  9. [转载]jQuery操作Table学习总结
  10. ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
  11. 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
  12. Coverage [minx,miny,maxx,maxy] is [12, 4, 13, 6, 3], index [x,y,z] is [2, 5, 3]错误原因及其解决方式...
  13. 电脑解锁后黑屏有鼠标_电脑开机黑屏只有鼠标怎么办
  14. 下载网页中不能下载的pdf
  15. 左手画方右手画圆代码
  16. 差异表达分析(DEG)时 row.names'里不能有重复的名字 的解决方案
  17. vmware虚拟机连接usb,显示:无法识别的usb设备,跟这台计算机连接的前一个usb设备工作不正常
  18. the Graph子图部署(使用Hosted Service)
  19. anaconda安装dlib出现ImportError: libopenblas.so.0: cannot open shared object file***
  20. 应用生命周期、页面生命周期、组件生命周期

热门文章

  1. atoi函数和itoa函数用法
  2. Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.
  3. @Valid注解是什么
  4. 《苏宁安全架构演进及实践》阅读有感
  5. 表单时间转换器(formatDate)
  6. 羊了个羊1.0(第一关)
  7. C#--实例选号器--实现删除和清空
  8. 论文 MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction
  9. 【数据结构】树(七)—— 哈夫曼树(C语言版)
  10. [附源码]SSM计算机毕业设计医学季节性疾病筛查系统JAVA