k8s1.21 安装ingress-nginx
k8s的ingress-nginx可以通过只占用node的两个端口(分别是http和https)来发布多个服务,而nodePort类型的Service,有几个服务就需要占用node几个端口,不利于端口管理。所以今天我们就来安装ingress,并且发布两个服务。
环境
操作系统:CentOS7
软件:kubectl、kubeadm、kubelet均是1.21版本,安装步骤见CentOS7搭建k8s集群
目标
在一个域名(模拟我们只有一个域名)下发布两个web服务。架构如下:
为此,我们准备两个springboot服务,只有一个简单的接口
当访问/web1/contextpath时返回web1
当访问/web2/contextpath时返回web2
镜像准备
使用ingress-nginx:v0.48.1
#拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1
#打标签,这里的标签是以后需要用到的
docker tag registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1 k8s.gcr.io/ingress-nginx/controller:v0.48.1
#删除下载的阿里镜像
docker rmi registry.cn-hangzhou.aliyuncs.com/kubernetes-fan/ingress-nginx:v0.48.1
yaml文件下载和修改
yaml内容可直接粘贴这位老哥的基于K8S 1.21.2集群安装Ingress-Nginx 0.48.1
这个yaml已经做了修改。修改的内容就是ingress的镜像。把镜像的标签改成你自己的ingress镜像标签即可,因为在【镜像准备】那一步我们把ingress镜像标签改成了k8s.gcr.io/ingress-nginx/controller:v0.48.1,所以image就改成k8s.gcr.io/ingress-nginx/controller:v0.48.1。
将yaml文件命名deploy.yaml
安装
kubectl create -f deploy.yaml
检查
安装之后,会新建一个ingress-nginx的namespace
kubectl get svc -n ingress-nginx
可以看到新建了一个nodePort类型的svc,分别映射的http和https。集群外部的流量要从nodePort流入k8s集群。比如我们要访问web1就应该写
http://www.zcx.com:30080/web1/contextpath
构建web镜像
把我们的springboot打成镜像,
web1的镜像是ws1,svc是ws1-svc
web2的镜像是ws2。svc是ws2-svc
yaml文件如下,注意我们的端口是9090
apiVersion: apps/v1
kind: Deployment
metadata:name: ws1-deploynamespace: default
spec:replicas: 1selector:matchLabels:app: ws1template:metadata:labels:app: ws1spec:containers:- name: ws1image: ws1:latestimagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 9090
---
apiVersion: v1
kind: Service
metadata:name: ws1-svcnamespace: default
spec:type: ClusterIP # 默认类型selector:app: ws1ports:- name: httpport: 9090targetPort: 9090---
apiVersion: apps/v1
kind: Deployment
metadata:name: ws2-deploynamespace: default
spec:replicas: 1selector:matchLabels:app: ws2template:metadata:labels:app: ws2spec:containers:- name: ws2image: ws2:latestimagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 9090
---
apiVersion: v1
kind: Service
metadata:name: ws2-svcnamespace: default
spec:type: ClusterIP # 默认类型selector:app: ws2ports:- name: httpport: 9090targetPort: 9090
创建ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-httpannotations:
# 注意这里不要重写,否则会请求不到资源。重写就是把web1重写成 / 当然找不到资源
# nginx.ingress.kubernetes.io/rewrite-target: /kubernetes.io/ingress.class: "nginx"namespace: default
spec:rules:- host: "www.zcx.com"http:paths:- path: /web1pathType: Prefixbackend:service:name: ws1-svcport:number: 9090- path: /web2pathType: Prefixbackend:service:name: ws2-svcport:number: 9090
DNS解析
要保证发起请求的主机能解析www.zcx.com这个域名,
把www.zcx.com配置成k8s集群下任意一台主机都行
如果你在虚拟机上测试,就把www.zcx.com配置到虚拟机的/etc/hosts下。
如果你在windows上测试,就把www.zcx.com配置到C:\Windows\System32\drivers\etc\hosts下
测试
在虚拟机上
curl www.zcx.com:30080/web1/contextpath
curl www.zcx.com:30080/web2/contextpath
在postman上
后记
手动指定nodePort端口
安装ingress-nginx时绑定的nodePort是随机的,可以修改yaml文件手动指定
修改Service部分,而不是Deployment部分
注意
因为没有用镜像仓库,所以要保证每个node上都有我们的ws1和ws2镜像哦
后续
现在我们用Deployment+NodePort的方式完成了一个ingress-nginx管理整个集群的服务,那如果这一个ingress-nginx不可用了怎么办,下一篇,我们使用DaemonSet+HostNetwork+nodeSelector的方式搭建多个ingress-nginx实例的高可用集群。
参考
基于K8S 1.21.2集群安装Ingress-Nginx 0.48.1
k8s ingress原理及ingress-nginx部署测试
k8s1.21 安装ingress-nginx相关推荐
- k8s 安装ingress nginx controller 并部署.net core ingress服务
192.168.28.132 k8smaster 192.168.28.133 k8snode1 192.168.28.134 k8snode2 192.168.28.135 k8snode3 192 ...
- 网关流控利器:结合 AHAS 实现 Ingress/Nginx 流量控制
作者:涂鸦 微服务的稳定性一直是开发者非常关注的话题.随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战.应用高可用服务 AHAS ...
- 解决办法在安装完Nginx后服务启动失败
在安装完Nginx后服务启动失败的解决办法 systemctl start nginx //启动服务 Job for nginx.service failed because the control ...
- nginx: [error] CreateFile() “D:\nginx-1.21.6/logs/nginx.pid“ failed (2: The system cannot find the
问题描述 nginx: [error] CreateFile() "D:\nginx\nginx-1.21.6\nginx-1.21.6/logs/nginx.pid" faile ...
- Nginx学习笔记02——安装部署Nginx
前期准备 VMware和CentOS7 安装VMware虚拟机,在VMware中安装CentOS7操作系统,我这边只提供Vmware和CentOS7的下载地址,网上有很多教程,一步一步跟着安装就行. ...
- 【Linux系列】安装配置Nginx
[Linux 环境]安装配置Nginx 文章目录 [Linux 环境]安装配置Nginx 前言 一.Nginx是什么? 二.使用Nginx 1.安装nginx 2.配置Nginx 3.配置websoc ...
- Ubuntu环境下安装FastDFS+Nginx服务的流程
step 1 : 准备材料 链接:https://pan.baidu.com/s/1_vGoqA-FJIHcYI5NJZAxuw 密码:67cu step 2: 安装fastdfscommon 2-1 ...
- Kubernetes Ingress Nginx使用
在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用.主要演示如何使用ingress nginx实现我们nginx的多样化配置,从而达到使用ingr ...
- mysql数据库21_Mysql5.7.21安装文档
Mysql5.7.21安装文档 发布时间:2020-06-27 13:59:56 来源:51CTO 阅读:946 作者:PengChonggui --1.创建用户组mysql,创建用户mysql并将其 ...
最新文章
- 目录服务技术介绍——ADSI(三)
- java sftpv3client_Ganymed SSH-2 for Java系列8之SFTPv3Client说明
- crosstool-ng 编译交叉工具链的常见错误及解决办法
- 再见,Navicat!这个IDEA的兄弟,真香!
- 实现MySQL高可用群集配置_配置高可用性的MySQL服务器负载均衡群集
- sohu读博——周忆清
- 如何计算虚拟化vcpu_首次公开:腾讯云虚拟化技术原理及可用性提升实践
- 第 7 章 使用filter过滤请求
- Linux系统下修改主机名(CentOS7)
- python组态软件开源_freescada开源wpf组态软件
- jquery div点击展开,点击收起,点击除了该div外任何地方,该div隐藏
- pycharm 安装JPype
- VNET原理与实现(1)
- UVALive 3713 Astronauts(2SAT)
- javaweb重定向——登录页面跳转到首页
- 计算机显示找不到gpedit,Win7系统gpedit.msc找不到的解决方法
- Android 补间动画及动画组合AnimationSet常用方法整理
- 【高等数学笔记】二元函数连续、可微、偏导数存在、偏导数连续、任意方向导数存在的关系
- Linux 最最最常用的命令
- 2014湖南农业大学ACM校赛