k3s学习笔记(三)

这篇文章主要看一下三种::ServiceType::。总的架构如下图所示:

这图里面涉及到的东西比较多,后续会用多篇文章进行说明。首先看下::k3s::默认启动的服务:

$ sudo kubectl get svc -n kube-system

下面是查询结果:

首先看一下这个traefik这个service,这个service的类型是LoadBalancer,所以它是直接把所有服务的端口转发到::node的ip地址上面::。看一下这个service的具体信息:

$ sudo kubectl describe svc -n kube-system traefik

上面命令的具体输出如下:

上面的输出有几点可以学习:

注意这个LoadBalancer Ingress的地址,这个地址其实就是node的ip地址,也就是树莓派的主机地址。可以验证如下:

$ ip addr show wlan0

在树莓派的主机执行上面的查询命令,得到结果如下:

可以看到主机地址就是192.168.3.47。那么我们可以试试看访问192.168.3.4780端口。使用httpie来访问一下试试:

$ http 192.168.3.47:80

可以看到访问结果如下:

可以看到上面404 page not found,实际是traefik的默认页面,因为我们还没有配置任何的url转发。

所以可以看到,traefik作为一个::Ingress Controller::本身,它以::LoadBalancer::的service的形式在运行。

因此在架构方面,所有的其他service理论都应该以Ingress的形式,通过traefik的转发而提供访问。因此应该只有traefik一个service以LoadBalancer的形式存在。

至于NodePort形式的service,类似于docker里面的端口映射,这个是最简单的service部署方案,在后续文章里面展示一下即可。

本文最后再说一下::k3s服务::里面::LoadBalancer::这个type的服务是怎么实现的。

实际上::LoadBalancer::这个类型的service是靠前一篇文章中列出的这个模块实现的:

上面提到的这个模块,会为每一个::LoadBalancer::类型的service创建一个::pod功能模块::,提供::直接的端口转发::,并且这个功能模块会命名为svclb-xxx。可以通过下面的查询命令验证这一点:

$ sudo kubectl get po -n kube-system

下面是查询结果:

可以看到名为svclb-traefik-bzbmj的pod,这个就是::kilpper-lb::这个模块自动创建的用来提供::LoadBalancer::服务的pod。

以上就是本文的内容。

My Github Page: https://github.com/liweinan

Powered by Jekyll and Theme by solid

If you have any question want to ask or find bugs regarding with my blog posts, please report it here:
https://github.com/liweinan/liweinan.github.io/issues