确认如何在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

负载均衡器已经部署了。
确认沟通
访问负载均衡器的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 的控制台上进行确认。

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