最近我一直在使用Kubernetes,我偶然发现了loadbalancer主题。我一直遵循此文档:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
我遵循了从yaml文件开始的完全相同的步骤:
apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
selector:
app: example
ports:
- port: 8765
targetPort: 9376
type: LoadBalancer
官方留档说结果是如果我做kubectl描述服务示例服务:
Name: example-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=example
Type: LoadBalancer
IP: 10.67.252.103
LoadBalancer Ingress: 192.0.2.89
Port: <unnamed> 80/TCP
NodePort: <unnamed> 32445/TCP
Endpoints: 10.64.0.4:80,10.64.1.5:80,10.64.2.4:80
Session Affinity: None
Events: <none>
但是,我的没有“负载均衡器入口”:
Name: example-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=example
Type: LoadBalancer
IP Families: <none>
IP: 10.1xx.1xx.1x
IPs: 10.1xx.1xx.1x
Port: <unset> 8765/TCP
TargetPort: 9376/TCP
NodePort: <unset> 30956/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
我想知道为什么?IPs是否与LoadBalancer入口相同?非常感谢你
您要创建LoadBalancer
类型的库伯内特斯服务。
正如我们在库伯内特斯LoadBalancer留档中看到的:
在支持外部负载均衡器的云提供商上,将类型字段设置为LoadBalancer会为您的服务提供负载均衡器。
例如,当我们使用Google Kubernetes引擎(GKE)时:
创建LoadBalancer类型的服务时,Google Cloud控制器会唤醒并配置网络负载均衡器。
这是我的GKE集群中的一个示例:
注意:正如您在事件部分所看到的那样,负载平衡器是由Google云自动提供的。
$ kubectl describe services example-service
Name: example-service
Namespace: default
Labels: <none>
Selector: app=example
Type: LoadBalancer
IP Families: <none>
IP: 10.0.1.66
IPs: <none>
LoadBalancer Ingress: <MY_PUBLIC_IP>
Port: <unset> 8765/TCP
TargetPort: 9376/TCP
NodePort: <unset> 31158/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 30m service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 29m service-controller Ensured load balancer
我从您的评论中得出结论,您没有使用任何托管Kubernetes服务(EKS、GKE、AKS等),而是在裸机上使用Kubernetes。
通常,如果您尝试在不在云提供商上运行的集群中创建“LoadBalancer”类型的Kubernetes服务,LoadBalancer将无限期地保持“挂起”状态。
这是我的裸机集群中的一个示例(示例服务处于“挂起”状态达23分钟):
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
example-service LoadBalancer 10.106.205.85 <pending> 8765:31091/TCP 23m
注意:与您的示例中一样,我也没有
LoadBalancer入口
条目:
$ kubectl describe svc example-service
Name: example-service
Namespace: default
Labels: <none>
Selector: app=example
Type: LoadBalancer
IP: 10.106.205.85
Port: <unset> 8765/TCP
TargetPort: 9376/TCP
NodePort: <unset> 31091/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
裸机上的库伯内特斯需要一个负载均衡器实现,例如MetalLB来提供此功能。
注意:通常,MetalLB
与云提供商不兼容:
MetalLB用于裸机集群,甚至提供“专用服务器”的云提供商通常也不支持MetalLB所需的网络协议。
我创建了一个示例来说明如何在具有
MetalLB
的裸机集群上创建LoadBalancer
类型的库伯内特斯服务。
首先,我通过应用MetalLB安装留档中描述的清单来安装
MetalLB
。
然后,我创建了
config
ConfigMap
,它使MetalLB
可以控制特定的IP范围(请参阅第2层配置MetalLB留档):
$ cat config-cm.yml
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.11.200-192.168.11.210
$ kubectl apply -f config-cm.yml
configmap/config created
最后,我创建了示例服务LoadBalancer,并检查它是否按预期工作:
$ kubectl apply -f example-service.yml
service/example-service created
$ kubectl get svc example-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
example-service LoadBalancer 10.103.71.220 192.168.11.200 8765:32001/TCP 8s
$ kubectl describe svc example-service
Name: example-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=example
Type: LoadBalancer
IP: 10.103.71.220
LoadBalancer Ingress: 192.168.11.200
Port: <unset> 8765/TCP
TargetPort: 9376/TCP
NodePort: <unset> 32001/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
正如您可以看到的,
example-service
Service具有LoadBalancer In的
条目,其地址为192.168.11.200
。
我正在尝试访问Rest Assured注入的HTTP头。Spring的模拟MVC让您可以通过MVC结果访问几乎所有内容,并且您可以使用这个结果来记录关于请求和响应的几乎所有内容。我能看到如何做到这一点的唯一方法是使用一个过滤器。但是,它为您提供了有限的请求访问权限(您只需要获得RequestSpecification)。我知道访问由HttpClient添加的头可能很棘手,但看起来您甚至无法访问由R
华为,面试已结束 自我感觉三面不是很理想,祈祷华子收留我 中兴,虽然专业没有这么对口,最近还在恶补中,但base 西安,听说也是预研部门,如果能去感觉也不错 ———————————————————- 虽然岗位不匹配,但是面试官很nice,给我把简历释放了,还帮我联系了相关部门的hr,等重新安排中 荣耀,面完了资面和技术一面,荣子的面试流程观感很好,希望后边顺利吧 感觉今年研究所好难啊,挂在简历上真
问题内容: 现在在我的应用程序中,某些时候我们正在将一些繁重的工作记录到日志文件中。 基本上仅用于日志记录,我们先创建可用数据的JSON,然后登录到Log文件。这是以JSON格式记录数据的业务要求。 现在从可用数据创建JSON,然后登录到FILE需要花费大量时间,并影响原始请求的返回时间。现在的想法是改善环境。 我们讨论的一件事是使用以下方法创建线程池 在我们的代码中,然后向其提交任务,该任务会将
出身背景 我使用的是Postsharp版本3.0.42.9,并创建了一个自定义跟踪器属性(
4399游戏后端开发工程师 面了大概半个多小时 上来自我介绍,问了点项目里的内容,然后接下来基本都是八股。 用过的容器,unodered_map底层是什么,答哈希表,问,哈希表的底层是什么?怎么找到对应关系?hash函数相关 map底层是什么?答红黑树,问什么是红黑树,红黑树有什么特点? 字符串匹配算法,说了下KMP 进程和线程相关的问题。 段错误相关内容。 用过图的数据结构吗? 了解哪些排序?归
问题内容: 如何找到不同列级别之间以分钟为单位的日期差异,例如 如何获取第一条记录的EndDate与下一条记录的开始日期之间的差异与最后一条记录与NULL值之间的差异。 结果需要 谢谢 普拉夫 问题答案: