Kubernetes(三) 如何从外部访问服务

Kubernetes(三) 如何从外部访问服务

Kubernetes教程之对外暴露服务

文章地址: [https://blog.piaoruiqing.com/blog/2019/10/20/kubernetes如何从外部访问服务/)

前言

通过前文的讲解,《跟着官方文档从零搭建K8S》《应用部署》相信读者已经对Kubernetes安装及部署应用有了一定的了解. 接下来, 本文将针对如何将服务暴露给外部进行讲解.

阅读这篇文章你能收获到:

  • 了解Kubernetes暴露服务的几种方案及其优缺点.

阅读本文你需要:

  • 了解基本的Kubernetes命令.
  • 有一个Kubernetes环境

将服务暴露给外部客户端的几种方式

  • 通过port-forward转发, 这种方式在之前的文章中有提到过, 操作方便、适合调试时使用, 不适用于生产环境.
  • 通过NodePort, 此时集群中每一个节点(Node)都会监听指定端口, 我们通过任意节点的端口即可访问到指定服务. 但过多的服务会开启大量端口难以维护.
  • 通过LoadBalance来暴露服务. LoadBalance(负载均衡 LB)通常由云服务商提供, 如果云环境中不提供LB服务, 我们通常直接使用Ingress, 或使用MetalLB来自行配置LB.
  • 通过Ingress公开多个服务. Ingress公开了从群集外部到群集内 services 的HTTP和HTTPS路由. 流量路由由Ingress资源上定义的规则控制. 在云服务商不提供LB服务的情况下, 我们可以直接使用Ingress来暴露服务. (另外, 使用LB + Ingress的部署方案可以避免过多LB应用带来的花费).

准备

在开始之前, 笔者已经创建好了测试应用, 代码过长此处略去, 详见附录[1]附录[2]

我们通过kubectl get pods查看pod列表.

指的一提的是, 我们可以通过--namespace参数查看指定命名空间的pod列表, 也可以通过--all-namespaces来查看全部命名空间的pod列表.

由于没有指定命名空间,所以应用被放到default中了.

[root@nas-centos1 k8s-test]# kubectl get pods --namespace default
NAME                        READY   STATUS    RESTARTS   AGE
k8s-test-578b77cd47-sw5pd   1/1     Running   0          6m29s
k8s-test-578b77cd47-v6kmp   1/1     Running   0          6m29s

port-forward

port-forward这种方式访问pod, 可以指定pod实例, 简单方便, 很适合调试之用.

通过kubectl port-forward来配置转发:

[root@nas-centos1 k8s-test]# kubectl port-forward --address 0.0.0.0 k8s-test-578b77cd47-sw5pd 9999:8080
Forwarding from 0.0.0.0:9999 -> 8080

此时, 我们可以通过通过访问宿主机的9999端口来访问到k8s-test-578b77cd47-sw5pd8080端口.

/k8s-test/timestamp是该示例应用唯一一个api, 用于获取当前时间戳

[root@nas-centos1 k8s-test]# curl http://10.33.30.95:9999/k8s-test/timestamp
1571151584224
[版权声明]
本文发布于 朴瑞卿的博客, 允许非商业用途转载, 但转载必须保留原作者 朴瑞卿 及链接: http://blog.piaoruiqing.com. 如有授权方面的协商或合作, 请联系邮箱: [email protected].

NodePort

集群中每一个节点(Node)都会监听指定端口, 我们通过任意节点的端口即可访问到指定服务. 但过多的服务会开启大量端口难以维护.

参考文档: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport

创建一个Service, 并指定其类型为NodePort.

k8s-test-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: k8s-test-service
spec
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值