K8s快速配置公开服务

星期四, 9月 12, 2024 | 1分钟阅读 | 更新于 星期四, 9月 12, 2024

简单快速的配置k8s的公开服务

k8s一般不会直接使用pod进行服务的访问连接,原因不仅是pod容易被销毁重建,还因为pod的地址在集群外无法访问,从构建一个deployment开始快速配置公开访问的服务。


1.使用yaml配置文件快速创建一个deployment组件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80

此文件创建了一个简单的nginx服务器,使用1.27版本,拥有三个分片

2.使用kubectl进入一个pod进行访问测试

kubectl get pod -0 wide #此命令可以快速查看pod的ip地址

检测到地址后,进行pod的访问

kubectl exec -it <pod-name> -- /bin/bash 

使用curl访问随机一个pod的ip地址

curl <ip addr>

如果不出意外,则结果如下图所示: 访问结果 ctrl+d退出pod,再访问则返回空响应: 空响应

3.直接为deployment构建一个service作为调用接口

1.可以直接为组件创建一个service组件是最快的方法,但不常用。。。。

如果有100000000个deployment组件就遭老罪了,直接使用expose参数快速创建一个service

kubectl expose deployment <deployment-name>

完成后,访问service组件的ip地址正常访问即可

2.通过配置文件的方式创建service

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

重要

selector为选择器,它将判断具体为哪些应用创建service,可以通过labels 获取应用名

kubectl describe pod <pod-name>

label获取 检查集群运行情况即可

4.将服务改为公共服务

在将服务创建后,发现在外部还是无法访问,这是因为只创建了service组件,还没有指定这是个什么服务呢0.o

1.node:port服务

node:port服务可以实现将集群内部的服务公开到集群的节点上,因此只需要保证服务类型为此即可 实现外部服务

警告

service组件没有指定类型,则默认为clusterip类型的服务

2.修改配置文件

打开刚才创建service的yaml文件,进行配置(指定服务类型,以及对外端口):

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30081

重要

对外端口的范围为30000-32767之间

apply一下配置文件,检查服务状态: 服务状态 使用浏览器检查服务状态:

kubectl get nodes -o wide #获取集群所有节点的ip地址

浏览器访问 这样,一个外部可以访问的服务就配置好了

© 2024 - 2025 Aiser's Blog

欢迎来到我的博客!

Me

我的名字是Aiser,这是我的博客