Kubernetes06:【平稳迁移做准备】业务系统迁移Kubernetes:kubernetes的服务发现、ingress-nginx安装部署

一、常见的服务访问方式

在这里插入图片描述

1、集群内部服务

(1)、DNS+ClusterIP

在这里插入图片描述

(2)、Headless

在这里插入图片描述

2、集群内访问集群外的服务

(1)IP+Port

在这里插入图片描述

(2)OutService

在这里插入图片描述

2、集群外访问集群内的服务

(1)NodePort

在这里插入图片描述

(2)hostip

在这里插入图片描述

(3)ingress

1)传统的方式

传统的方式解析域名是配置一个Nginx,在nginx.conf配置对应的域名和对应的pod的ip、端口进行配置,浏览器请求到nginx,因为nginx在集群的内部,可以访问到所有po的ip,就可以正常的请求到结果了。
但是有一个问题:如果pod经常变化,域名也经常增加,如果每次修改都要修改配置文件,还有进行reload进行重启,这样的过程比较麻烦和复杂的。

在这里插入图片描述
kubernetes也考虑到了这个问题,提出了ingress 概念。

2)ingress

在这里插入图片描述
像成熟的方案:ingress nginx、ingress gce等。

二、ingress-nginx安装部署

我们之前搭建的k8s集群支持上述的服务访问方式,像NodePort、Service 除了域名访问,这个域名访问需要使用域名的访问方案,下面我们来搭建其中的一种实现:ingress-nginx。

1、先去官网了解一下

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

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

2、ingress-nginx下载安装

(1)github地址

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

(2)下载配置

在这里插入图片描述

(1)下载

下载地址:

链接:https://pan.baidu.com/s/1eK-XnD9hRmaWIwDUyApwcw?pwd=emr9 
提取码:emr9 

在这里插入图片描述

mkdir ingress-nginx
mv mandatory.yaml

(2)进行apply

kubectl apply -f mandatory.yaml

在这里插入图片描述

检查一下

kubectl get all -n ingress-nginx

在这里插入图片描述
稍等一会。。

因为这个文件里用到了几个镜像

grep image mandatory.yaml

在这里插入图片描述
注意,去node-2、node-3去验证一下这些镜像能不能正常下载!!
node-2:

docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0

在这里插入图片描述
node-3:

docker pull k8s.gcr.io/defaultbackend-amd64:1.5

发现有一个下载不了。
在这里插入图片描述
去这里下载

docker pull registry.cn-hangzhou.aliyuncs.com/liuyi01/defaultbackend-amd64:1.5

在这里插入图片描述
重新打个标签

docker tag registry.cn-hangzhou.aliyuncs.com/liuyi01/defaultbackend-amd64:1.5 k8s.gcr.io/defaultbackend-amd64:1.5

在这里插入图片描述
注意在node-2、node-3都要下载这些镜像。

(3)再去验证下

去node-1进行验证

kubectl get all -n ingress-nginx

在这里插入图片描述

(4)下面我们来暴露端口

在这里插入图片描述
在这里插入图片描述
我们这里的worker节点的80端口都在监听中

netstat -ntlp|grep 80
在这里插入图片描述
这个端口是harbor的

我们把node-2的harbor停掉,因为我们当前的nginx指向的是121是node-3。

到node-2上:

docker-compose down

在这里插入图片描述
释放掉120的80端口,将ingress controller调度在80端口上。

再次检查一下80端口和443端口

netstat -ntlp|grep 80
netstat -ntlp|grep 443

(5)进行配置

到node-1上

kubectl get nodes

在这里插入图片描述
把node-2打标签

kubectl label node dh-neibu-20.120-docker.cn app=ingress

在这里插入图片描述
修改配置文件

vi mandatory.yaml

添加如下内容:
在这里插入图片描述

kubectl apply -f mandatory.yaml

q在这里插入图片描述
去验证一下:

kubectl get all -n ingress-nginx

在这里插入图片描述
稍等一下。。

kubectl get all -n ingress-nginx

在这里插入图片描述
现在我们去node-2上查看一下80端口

netstat -ntlp|grep 80

在这里插入图片描述
再看一下443

netstat -ntlp|grep 443

3、进行测试

这里我们起个服务

在node-1上配置ingress-demo.yaml

内容如下:

在这里插入图片描述
文件下载地址:

链接:https://pan.baidu.com/s/1s-TGvWM3yF2uDqYBUB6glg?pwd=mtrl 
提取码:mtrl 

然后我们create一下

kubectl create -f ingress-demo.yaml

在这里插入图片描述

kubectl get pod -o wide

在这里插入图片描述
下面我们去我们本机的host文件下新增如下:
因为我们的ingress-nginx在10.155.20.120上。

10.155.20.120 tomcat.mooc.com
10.155.20.120 api.mooc.com

打开浏览器进行访问

api.mooc.com

在这里插入图片描述

tomcat.imooc.com

在这里插入图片描述
注意,这个pod处于不可用状态是503

回去验证一下:

kubectl get pod -o wide

在这里插入图片描述
还在创建中。

我们去121上去看下

journalctl -f

还在下载镜像中。
在这里插入图片描述
在这里插入图片描述
再次验证

tomcat.mooc.com

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40612128/article/details/123579326