k8s service type_你不可能搞不定腾讯云K8S的Service/Ingress

85950383da16454134517bedc761b844.png

你不可能搞不定腾讯云K8S的Service/Ingress

前言

上一个手把手教程上简单介绍过k8s中的Pod/Service,

里面提到过Service是K8S中的负载均衡, 同时也可以在不同Pod中使用Service name互相访问.

如果我们在外部(公网)访问K8S的服务怎么办呢?

首先, 你的有个公网IP.

然后....关掉这个教程.

回到正文.

在k8s中, ingress来负责对外提供访问, 一般域名配置, 域名证书都在这边.

是不是有点熟悉? 这不就是NGINX?

对的, 甚至ingress的实现就有一部分是NGINX.

但是, 大家都知道, 公网IP这种东西, 可是要收费的.

腾讯云的收费标准: 应用型负载均衡器(支持HTTP/HTTPS)0.02元/小时

c38366621b9d2ff16d127e15160a8d69.png

有钱的同学直接用就好了,

教程见腾讯云集群管理, 点点点就好了.

穷人不配用公网? 不, 我们有自己的倔强!

想下, 我们在做k8s集群的时候, 用的主机不是本来就带公网IP吗?

虽然现在主机已经是k8s的worker节点了, 不过机器还是可以继续用的呀.

所以, 我们的方案是,

主机上装个NGINX,

由NGINX用端口转发的方式转到内部K8S Service中 ,

这样就完美了.

这样的话, 那么我们的主机怎么访问k8s Service呢?

在前面我们简单提过, k8s的pod,service都是在自己的内网的.

虽然现在主机和k8s的服务可能都在一个主机上, 然而里面还是有逻辑层内网隔离的.

那么, 这样怎么办呢?

放心, k8s service早就有解决方案啦.

答案是:

在腾讯云中的使用http://service.kubernetes.io/qcloud-loadbalancer-internal-subnetid annotations来申请内网IP.

---

查看一下配置的效果

➜  codelover-blog git:(master) ✗ kc get service                  
NAME             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
codelover-blog   LoadBalancer   172.16.255.232   172.17.0.28   80:32278/TCP                 55d


root@VM-0-13-ubuntu:~# curl -vvvv 172.17.0.28
* Rebuilt URL to: 172.17.0.28/
*   Trying 172.17.0.28...
* Connected to 172.17.0.28 (172.17.0.28) port 80 (#0)
> GET / HTTP/1.1
> Host: 172.17.0.28
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.17.1
< Date: Sun, 01 Sep 2019 05:30:51 GMT
< Content-Type: text/html
< Content-Length: 45988
< Last-Modified: Mon, 08 Jul 2019 03:59:21 GMT
< Connection: keep-alive
< ETag: "5d22bf99-b3a4"
< Accept-Ranges: bytes
<
<!DOCTYPE html>

现在内网IP有了, 下面也就是配置一下NGINX的事情了.

server 

好了, 完事.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Kubernetes 集群中,Service 是一种虚拟的访问入口,用于将请求转发到后端的 Pod。当你创建一个 Service 时,Kubernetes 会为该 Service 创建一个 Cluster IP,用于在集群内部进行访问,而且这个 IP 只能在集群内部进行访问。因此,在默认情况下,如果你通过集群外部的 IP 直接访问 Service,是无法成功的。 如果你希望从集群外部访问 Kubernetes 中的 Service,可以使用 Kubernetes Ingress 或者 NodePort 来实现。其中,Ingress 可以将多个 Service 绑定到同一个域名下,并通过反向代理来转发请求;而 NodePort 可以将 Service 暴露在 Kubernetes Node 的 IP 和一个固定的端口上,从而可以通过 Node 的 IP 和端口来访问 Service。 在腾讯云上部署 Kubernetes 时,你可以使用 TKE Ingress 或者腾讯云负载均衡来实现 Ingress 的功能,也可以使用腾讯云 CLB 来实现 NodePort 的功能。具体来说,你需要在创建 Ingress 或者 Service 时,配置相应的 annotations 或者标签,来指定使用 TKE Ingress腾讯云负载均衡或者 CLB。例如,你可以使用以下 annotations 来创建一个 Ingress,并通过腾讯云负载均衡来实现 Ingress 的负载均衡功能: ``` apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress annotations: ingress.cloud.tencent.com/group-name: "example-group" # 指定负载均衡器的分组名称 ingress.cloud.tencent.com/load-balance-id: "lb-xxxxxxxx" # 指定负载均衡器的 ID spec: rules: - host: example.com http: paths: - path: /foo backend: serviceName: example-service servicePort: 80 ``` 这样,在创建 Ingress 对象时,Kubernetes 会自动创建一个负载均衡器,并将请求转发到后端的 Service 上。需要注意的是,不同的云平台提供的负载均衡器的配置方式和限制可能不同,具体可以参考相应的文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值