通过Service指定SLB和自动创建SLB暴露服务

在 Kubernetes 中应用可通过Service的不同配置方法对外暴露服务,ACK支持通过指定SLB和自动创建SLB两种方式对外暴露LoadBalancer类型的服务。本文介绍如何通过指定SLB和自动创建SLB来暴露服务。

前提条件


操作步骤


步骤一:部署示例应用

1、执行以下命令,创建一个Nginx应用。

# kubectl run nginx --image=registry.aliyuncs.com/acs/netdia:latest

2、执行以下命令,确认Nginx应用的状态正常。

# kubectl get po -l run=nginx
NAME                                   READY     STATUS    RESTARTS   AGE
nginx-2721357637-dvwq3                 1/1       Running   1          6s

步骤二:通过SLB暴露服务

ACK支持通过指定SLB和自动创建SLB两种方式对外暴露。

方式一:自动创建SLB

1、执行以下命令为Nginx应用服务自动创建SLB。

# cat <<-EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  labels:
    run: nignx
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

2、执行以下命令确认LoadBalance类型的Service创建成功。

# kubectl get svc -l run=nginx
NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
nginx   LoadBalancer   172.23.xx.xx   123.56.xx.xxx   80:31015/TCP   14s

方式二:指定SLB

通过指定SLB对外暴露服务需要先有一个SLB实例,如果当前还没有SLB实例可通过SLB控制台创建。

1、执行以下命令为Nginx应用服务暴露服务。

说明: 请替换${YOUR_LB_ID}为您通过SLB控制台创建的SLB实例ID。

# cat <<-EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${YOUR_LB_ID}
  labels:
    run: nignx
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

2、执行以下命令确认LoadBalance类型的Service创建成功。

# kubectl get svc -l run=nginx
NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
nginx   LoadBalancer   172.23.8.212   123.56.xx.xxx   80:31015/TCP   14s

结果验证


Nginx应用已通过SLB对外暴露服务,可通过如下命令进行验证。

说明: 请替换${YOUR_LB_IP}为上述Service中EXTERNAL-IP字段显示的IP。

# curl ${YOUR_LB_IP}
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

参考文档