确认如何在Kubernetes的容器引擎(OKE)中设置LoadBalancer服务的方法

首先

一般而言,Kubernetes的LoadBalancer服务通常使用云服务提供商的负载均衡器服务。Kubernetes的手册中记载了针对每个云服务提供商的注意事项,但没有提及Oracle Cloud Infrastructure(OCI)。

 

OCI的手册中写着。

 

因此,本次我们将在OCI的Kubernetes服务(OKE)上确认LoadBalancer服务。

创建Pod

首先创建一个成为LoadBalancer端点的Pod。
虽然OCI的手册中有示例的清单,但只需要确保LoadBalancer正确创建,所以我想用命令简单地创建它。

$ kubectl run nginx --image=nginx
pod/nginx created
$ kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE          NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          28m   10.244.1.5   10.0.10.181   <none>           <none>

创建负载均衡器

我希望也能用指令来简单地创建这个。

$ kubectl expose pod nginx --port=80 --target-port=80 --name=nginx-lb --type=LoadBalancer
service/nginx-lb exposed
$ kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP        32h
nginx-lb     LoadBalancer   10.96.230.198   <pending>     80:30537/TCP   13s

刚创建完毕时,EXTERNAL-IP状态显示为pending。经过1、2分钟后,EXTERNAL-IP会被分配。

$ kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>           443/TCP        32h
nginx-lb     LoadBalancer   10.96.230.198   129.146.209.97   80:30537/TCP   54s

确认Pod的IP地址10.244.1.5已设置在LoadBalancer的终结点上。

$ kubectl describe svc nginx-lb
Name:                     nginx-lb
Namespace:                default
Labels:                   run=nginx
Annotations:              <none>
Selector:                 run=nginx
Type:                     LoadBalancer
IP:                       10.96.230.198
LoadBalancer Ingress:     129.146.209.97
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30537/TCP
Endpoints:                10.244.1.5:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  73s   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   29s   service-controller  Ensured load balancer
LB.PNG

负载均衡器已经部署了。

确认沟通

访问负载均衡器的IP地址并确认连通性。

$ curl 129.146.209.97 |grep nginx!
<title>Welcome to nginx!</title>
<h1>Welcome to nginx!</h1>

删除

我也会确认删除操作。

$ kubectl delete svc nginx-lb
service "nginx-lb" deleted

在 OCI 的控制台上进行确认。

LB-del.PNG

由于已删除的项目已经消失了,因此这张图片的可信度值得怀疑,但是使用 kubectl delete 命令也删除了 OCI 的负载均衡资源。

bannerAds