在Kubernetes(通过头盔安装)中使用nginx-ingress时,<?php
$diplayed_categories = []; //initializing array
foreach ($_productCollection as $_product):
?>
<div class="bk-all-products">
<?php
$bk_product_id = $_product->getCategoryIds();
$bk_category_id = $bk_product_id[1];
if(!in_array($bk_category_id, $diplayed_categories)){ //testing if not in array
$diplayed_categories[] = $bk_category_id; //filling the array
//moved inside the if, no need to fetch it again if it exists
//$categoryId = $bk_category_id; //useless var
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$category = $_objectManager->create('Magento\Catalog\Model\Category')
->load($bk_category_id); //replaced by $bk_category_id
$bk_category_id_name = $category->getName();
echo $bk_category_id_name;
echo "<br><br>";
}
?>
</div>
<?php endforeach; ?>
不是我的真实IP(不保留原始客户端IP)
我已经按照建议尝试了X-Real-Ip
,externalTrafficPolicy: "Local"
,但没有帮助...
答案 0 :(得分:0)
您能为我们提供更多信息,例如您正在使用的service
通过快速猜测,您似乎在错误的服务上应用了externalTrafficPolicy: "Local"
,
我以前也将它应用于我的NodePort
服务而不是 Nginx服务,但是它不起作用
请检查类型为LoadBalancer
的服务,通常将其命名为nginx-nginx-ingress-controller
,快速的kubectl get services --all-namespaces
可以为您显示所有正在运行的服务的列表。
TLDL
Local
意味着,当数据包到达Pod时,即使相同集群中的其他Pod负载较少,kube代理也只会在同一节点Pod中分配负载。
另一方面,在设置Cluster
值时,平衡不仅考虑节点,还考虑分配请求的Pod数量,并且为了避免不平衡,Kubernetes在群集内执行平衡。
https://medium.com/pablo-perez/k8s-externaltrafficpolicy-local-or-cluster-40b259a19404
https://github.com/jetstack/kube-lego/issues/57#issuecomment-277777686