38 k8s-18.service-使用Service代理k8s外部应用
1.2 使用Service代理k8s外部应用
//演示步骤分解: [root@k8s-master01 ~]# cp nginx-svc.yml nginx-svc-external.yaml 1.//打开vim编辑nginx-svc-external.yaml,删除掉无用的内容,并注释掉selector和app: nginx [root@k8s-master01 ~]# vim nginx-svc-external.yaml 2.//创建labels: 3.//创建nginx-svc-external.yaml [root@k8s-master01 ~]# kubectl create -f nginx-svc-external.yaml service/nginx-svc-external created 4.//查看新创建的服务 [root@k8s-master01 ~]# kubectl get svc 5.//查看endpoint,这个显示的是之前的nginx-svc对应的ep [root@k8s-master01 ~]# kubectl get ep 6.//导出之前的ep并命名为新的ep [root@k8s-master01 ~]# kubectl get ep nginx-svc -o yaml > nginx-ep-external.yaml 7.//使用vim打开编辑yaml; [root@k8s-master01 ~]# vim nginx-ep-external.yaml 01.//修改内容:删除掉无用的信息,然后修改labels的名称 02.//修改后labels的内容 03.//修改端口前 04.//修改端口后 05.//endpoint修改完内容就剩这么多 8.//我们计划代理百度的服务,先ping一下百度的网站,获取它的公网IP [root@k8s-master01 ~]# ping www.baidu.com 9.//拷贝旧文件并命令为nginx-svc-external.yaml文件 [root@k8s-master01 ~]# cp nginx-svc.yml nginx-svc-external.yaml 01.//编辑yeml文件 [root@k8s-master01 ~]# vim nginx-ep-external.yaml 02.//未修改外部IP前: 03.//修改后,IP更换为新获取的百度的IP(外部IP) 04.//再次检查一下nginx-svc-external.yaml的以下内容需要一致:labels、name、protocol等 10.//执行创建成功 [root@k8s-master01 ~]# kubectl create -f nginx-ep-external.yaml 11.//获取ep,检查IP和名称 [root@k8s-master01 ~]# kubectl get ep 12.//curl访问成功,显示200,表明该请求被成功地完成,所请求的资源发送到客户端 [root@k8s-master01 ~]# curl baidu.com -I HTTP/1.1 200 OK Date: Mon, 21 Feb 2022 07:39:28 GMT Server: Apache Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT ETag: "51-47cf7e6ee8400" Accept-Ranges: bytes Content-Length: 81 Cache-Control: max-age=86400 Expires: Tue, 22 Feb 2020 07:39:28 GMT Connection: Keep-Alive Content-Type: text/html 13.//获取SVC,查看对应的名称和IP; [root@k8s-master01 ~]# kubectl get SVC 14.//curl访问IP成功,显示200 [root@k8s-master01 ~]# curl 10.100.160.213 -I HTTP/1.1 200 OK
//执行之后port是随机的 [root@k8s-master01 ~]# kubectl get svc –n kubernets-dashboard [root@k8s-master01 ~]# ss -ntlp |grep 30000 (//执行之后port是随机的) //宿主机+端口号(随机的生成的,以实际的为准)访问: #192.168.0.201:30000