Service 资源

2022-03-22  本文已影响0人  Robin92

当前的集群,启动了两个 myweb 服务(nginx),当前可以在集群内用容器 IP 进行访问(内网),但无法通过外网访问。(具体来说是此私有地址没有绑定在节点的 IP 上,外网同时也获取不到此节点内容器的 IP 服务)

image.png

在 docker 中,要想被外界访问,我们通常做端口映射,将容器 IP 的端口映射到节点的 端口上,在 K8S 中不可以直接做端口映射,因为在集群内部容器的启动是不固定在某个节点的,而且不是固定一个的。因此,K8S 中引入了一个资源叫 Service。

创建 Service 资源

Service 启用了一个 Cluster IP,向内屏蔽了 Pod IP,向外整合了 Node IP。因此,当访问任意 Node IP 的端口时,会定位到 ClusterIP,然后负载均衡到内部的 Pod IP

image.png
# cat k8s/svc/nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort. # 端口映射的方式,还有其他支持
  ports:
    - port: 80          # cluster IP 的端口
      nodePort: 30000   # 宿主机的端口(宿主机的端口在配置文件中指定)
      targetPort: 80    # pod IP 地址
  selector:       # 为哪些 Pod 做负载均衡是通过标签选择器选择的
    app: myweb2
kubectl create -f k8s/svc/nginx-svc.yaml  # 创建 Service 资源
kubectl describe svc myweb # 查看 Service 资源
kubectl describe svc

这里与教程不一样:Endpoints 中没有匹配到任何 Pod 资源。发现 rc 资源一直没创建起来。

kubectl delete pod --all #  会删除所有 pod
kubectl get all # 获取所有 pod 列表 
# 删除所有 pod 后发现 rc 的 pod 资源没创建出来

通过重启 controller-manager systemctl restart kube-controller-manager 才显示正常。

重启 controller-manager 后显示了 endpoints
重启 master 节点重新查看一下 controller-manager 服务,原来它一直没有开机自启动,难怪每次重启后总是会出现问题。最后通过 kubectl enable kube-controller-manager 命令设置开机自启动。
重启节点后查看 controller-manager 状态

启动正常后,通过我的主机(系列文章中说的 master/node 各节点都是我本机装的 vmware 虚拟机)访问浏览器,终于可以正常访问了(用另外两个 node 的 IP 也可以正常显示):


image.png

所有 node 节点的 IP 都可以访问到 nginx 服务是由各节点上的 kube-proxy 服务自动帮我们创建的。

服务自动发现

演示:通过命令实现扩容 rc 资源。
效果:扩容的 Pod 会自动加入到集群中,这就是服务自动发现。

kubectl scale rc myweb2 --replicas=3
image.png

负载均衡

所启动的服务自动实现了负载均衡。
可通过在不同 nginx 容器中写入不同的 index.html(/usr/share/nginx/html/),然后访问浏览器地址,可发现此功能(由于浏览器会保持长连接,所以看起来不像是 RR 策略)。

修改节点端口号范围

按如下方式操作:

# 修改配置文件
vim /etc/kubernetes/apiserver
# (参考)配置文件中指定 cluster IP 的范围的配置
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
# 修改内容行,设置端口范围
KUBE_API_ARGS="--service-node-port-range=10000-60000"
# 启动命令文件是在这里,以上修改的变量在应用后会生效在此文件中
cat /usr/lib/systemd/system/kube-apiserver.service
# 重启
systemctl restart kube-api-server
WeChat0ac7271a015a7b148acf681241727083.png image.png
上一篇 下一篇

猜你喜欢

热点阅读