问题标签 [project-calico]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 主节点上的 Kubernetes Canal CNI 错误
我正在为客户设置 Kubernetes 集群。
我之前已经多次完成这个过程,包括处理 vagrant 的细节,我已经能够不断地让 K8s 集群启动并运行而不会大惊小怪。
现在,在这个客户身上,我也在做同样的事情,但我在设置时发现了很多问题,这完全出乎意料。与我设置 Kubernetes 的其他地方相比,我看到的唯一明显区别是我有一个代理服务器,我必须经常与之抗争。没有什么NO_PROXY
是环境无法处理的。
我面临的主要问题是建立运河(Calico + Flannel)。出于某种原因,在 Masters 2 和 3 上它不会开始。
寻找具体的错误,我发现问题出在kube-flannel
容器上,它抛出了一个错误:
我只是不明白为什么。
一些相关信息:
- 我的 clusterCIDR 和 podCIDR 是:192.168.151.0/25 (我知道,这很奇怪,除非是大问题,否则不要问)
- 我已经在 systemd 上设置了 etcd
- 我已经修改了 kube-controller-manager.yaml 以将掩码大小更改为 25(否则前面提到的 IP 将不起作用)。
我正在使用 Kubeadm 安装所有东西。我注意到的一件奇怪的事情是,在查看 config ( kubeadm config view
) 时,我在 kubeadm config.yaml
(for kubeadm init
) 上设置的大部分信息都没有出现在配置视图中,包括 etcd 证书的路径。我也不确定为什么会发生这种情况,但我已经(希望)通过编辑 kubeadm 配置映射 ( kubectl edit cm kubeadm-config -n kube-system
) 并保存它来修复它。
运河仍然没有运气。
谁能帮我找出问题所在?我已经记录了我所做的配置的几乎每一步,所以如果需要我可以提供它。
编辑:
我想同时我的 master2 和 3 确实没有关联的 podCIDR。为什么会发生这种情况?我该如何添加它?
kubernetes - k8s DaemonSet:被拒绝的 Pod 重新创建太快而无法获取任何日志或事件
我遇到了与此处所述完全相同的问题:https ://github.com/kubernetes/kubernetes/issues/51884
calico节点被创建但又被直接删除:
你能告诉我如何解决这个问题吗?journalctl 不会打印出 pod 失败的原因。甚至没有创建 pod,也可以看到日志。
kubernetes - kubernetes HA 集群主节点未准备好
我已经使用下一个 config.yaml 部署了一个 kubernetes HA 集群:
当我检查时kubectl get nodes
:
如果我检查 pod,我可以看到太多失败了:
如果我运行kubectl describe node master2
:
然后,如果我检查吊舱,则kubectl describe pod -n kube-system calico-etcd-5jftb
:
我尝试将 etcd 集群更新到 3.3 版,现在我可以看到下一个日志(以及更多超时):
我检查过:kubectl get events
kubernetes - 使用 NetworkPolicy 将“kube-system”命名空间列入白名单
我有一个多租户集群,其中多租户是通过命名空间实现的。每个租户都有自己的命名空间。一个租户的 Pod 不能与其他租户的 Pod 通信。但是,每个租户中的一些 pod 必须使用 Ingress 向 Internet 公开服务。
这我走了多远(我正在使用 Calico):
为每个命名空间 ( tenant1
, tenant2
, ... ) 部署,这限制了其命名空间内 pod 之间的通信。但是,这会阻止kube-system
命名空间中的 pod 与此命名空间中的 pod 通信。
但是,kube-system
默认情况下,命名空间没有任何标签,因此我不能专门将该命名空间列入白名单。
我通过手动给它一个标签找到了一个(肮脏的)解决方法:
并将白名单规则添加到网络策略中:
有没有更好的解决方案,无需手动给出kube-system
标签?
编辑:我尝试另外添加一个“OR”规则,以专门允许来自具有标签“app=nginx-ingress”的 pod 的通信,但没有运气:
kubernetes - 如何在 Kubernetes 的 cluster-cidr 中设置不同的(从默认值)掩码?
我使用 Kubespray 部署工具(启用了 kubeadm 实验功能标志)部署了一个 Kubernetes 1.10.4 集群(3 个 Master,2 个 Workers)。
顺便说一句,我将 Canal 用作“kube_network_plugin”。
我的客户有一些网络限制。他们提供了以下网络空间:
- 192.168.150.0/25
- 192.168.150.128/25
- 192.168.151.0/25
关于 kubespray 'k8s-cluster.yml',我已经更改了默认参数,默认为:
- kube_service_addresses:10.233.0.0/18
- kube_pods_subnet:10.233.64.0/18
- kube_network_node_prefix:24
我们尝试更改这些参数以匹配客户提供给我们的网络空间,但不幸的是,此修改没有按预期工作。我们很快意识到使用 /25 掩码无法按预期工作,因此我们尝试从 /25 到 /20 使用,但没有任何效果。
我尝试使用 192.168.150.0/18 或 172.18.0.0/18 并且一切顺利(只要我们使用 /18 掩码),如下所示。
当使用不同于 /18 的掩码时,集群呈现的行为有点奇怪,因为例如 kube-dns pod、kube-proxy pod、kube-autoscaler 等,根本不会起床或 canal-pods部署在一个节点中,但在其他集群节点中却没有。
Kubernetes 是否有任何限制/约束不支持与 /18 不同的任何网络,或者我做错了什么?
我在网上搜索过这个,但在我读到的所有内容中都没有明确说明这一点。有人说(https://docs.projectcalico.org/v3.1/reference/calicoctl/resources/ippool)可以设置与默认值(/16)不同的掩码,但事实是如果我们改变它,它不起作用。
你能帮我解决这个问题吗?
此致,
佩德罗·克拉沃·洛佩斯。
kubernetes - 记录 Kubernetes Calico NetworkPolicy?
我是 KubernetesNetworkPolicy
和网络插件的新手calico
。
calico
我已经在我的 Kubernetes 集群中成功实现了:
我还配置了相关的网络策略,它们工作得很好。
我唯一关心的是日志记录。我找不到任何可以告诉我某个请求是被接受还是被阻止的日志。
我试过检查calico-nodes-*
pod 的日志,但它们没有提供任何合理的日志。
还有其他我可以查看的日志吗?
kubernetes - 如何使用 Calico 编写一个最小的 NetworkPolicy 来为具有 LoadBalancer 类型的服务的 Kubernetes 应用程序提供防火墙?
我有一个运行 Calico 作为覆盖和 NetworkPolicy 实现的 Kubernetes 集群,为 IP-in-IP 封装配置,我正在尝试使用以下服务公开一个简单的 nginx 应用程序:
我正在尝试编写一个仅允许通过负载均衡器进行连接的 NetworkPolicy。在没有覆盖的集群上,这可以通过允许来自用于将 IP 分配给工作程序实例本身的 CIDR 的连接来实现 - 这允许连接在特定工作程序上访问服务的 NodePort 并转发到后面的容器之一通过 IPTables 规则服务。但是,当使用配置为 IP-in-IP 的 Calico 时,通过 NodePort 建立的连接使用 Calico 的 IP-in-IP 隧道 IP 地址作为跨节点通信的源地址,如此ipv4IPIPTunnelAddr
处 Calico Node 对象上的字段所示(I通过观察通过负载均衡器连接到 nginx 应用程序的源 IP 来推断这一点)。因此,我的 NetworkPolicy 需要允许这样的连接。
我的问题是如何在不ipv4IPIPTunnelAddr
事先知道值且不允许来自集群中所有 Pod 的连接的情况下允许这些类型的连接(因为这些ipv4IPIPTunnelAddr
值是从集群的 Pod CIDR 范围中提取的)。如果工作实例出现并死亡,这些 IP 的列表肯定会发生变化,我不希望我的 NetworkPolicy 规则依赖于它们。
- 印花布版本:3.1.1
- Kubernetes 版本:1.9.7
- 等版本:3.2.17
- 云提供商:AWS
kubernetes - 将节点端口添加到令人兴奋的 istio 服务
我使用 VM(ubuntu 16.04)创建了一个本地 kubernetes 集群,其中有一个 master 和 2 个 worker 我也使用 calico 进行网络,我目前正在探索 istio。我的问题是入口负载均衡器没有获得外部 IP。据我了解,我应该使用节点端口来访问入口负载均衡器,但我可以找到这样做的方法。我应该在安装时完成它,我现在可以添加它吗?如何添加?
kubernetes 版本:v1.11.1 calico 版本:v3.1 istio 版本:0.8.0
kubernetes - 调试 istio 基于内容的路由
我是Istio
通过 bookinfo 示例应用程序了解的。此时,我正在测试基于内容的路由,作为调试过程的一部分,我必须在Istio-ingress
pod 上使用 curl 命令,但它不存在(这很奇怪,因为根据 istio 站点它应该存在)我应该离线安装(不兴奋)还是应该将 pod 连接到互联网?有没有其他方法可以检查VirtualService
和DestinationRule
是否正常工作?
Kubernetes 版本:1.11.1
印花布版:3.1
Istio 版本:0.8.0
我的意思是我创建了VirtualService
但它不起作用,我想知道如何调试它,因为 istio 官方站点中提出的方法使用 curl 命令(在istio-ingress
pod 中不存在)
这是输出 kubectl get virtualservices -o yaml
kubernetes - Kube-proxy 或 ELB“延迟”HTTP 请求的数据包
我们在 AWS 的 Kubernetes (1.9.3) 上运行一个 Web API 应用程序(使用 KOPS 设置)。该应用程序是一个部署,由一个服务(类型:LoadBalancer)表示,它实际上是 AWS 上的 ELB(v1)。这通常有效 - 除了某些数据包(HTTP 请求的片段)在客户端 <-> 应用程序容器之间的某处“延迟”。(在 ELB 上终止的 HTTP 和 HTTPS 中)。
从节点端:
(注意:几乎所有服务器端的数据包都重复 3 次到达)
我们使用 keep-alive,因此 tcp 套接字是打开的,请求到达和返回的速度非常快。然后问题发生了:
- 首先,一个只有标头的数据包到达 [PSH,ACK] (我看到带有 tcpdump 的有效负载中的标头)。
- 一个 [ACK] 由容器发回。
- tcp 套接字/流在很长一段时间内都很安静(最多 30 秒或更长时间- 但间隔不一致,我们认为 > 1 秒是一个问题)。
- 另一个带有 HTTP 数据的 [PSH, ACK] 到达,最终可以在应用程序中处理请求。
从客户端:
我已经从我的计算机运行了一些流量,将其记录在客户端以查看问题的另一端,但不能 100% 确定它代表真正的客户端。
- 带有标题的 [PSH,ASK] 熄灭。
- 一些带有部分有效负载的 [ACK] 开始发出。
- 几秒钟(或更长时间)没有响应到达,也没有更多的数据包出去。
- 标记为[TCP Window update]的[ACK]到达。
- 再次短暂暂停,[ACK] 开始到达,会话继续,直到有效负载结束。
这仅在负载下发生。
据我了解,这介于 ELB 和 Kube-Proxy 之间,但我一无所知并且迫切需要帮助。
这是 Kube-Proxy 运行的参数:
Commands: /bin/sh -c mkfifo /tmp/pipe; (tee -a /var/log/kube-proxy.log < /tmp/pipe & ) ; exec /usr/local/bin/kube-proxy --cluster-cidr=100.96.0.0/11 --conntrack-max-per-core=131072 --hostname-override=ip-10-176-111-91.ec2.internal --kubeconfig=/var/lib/kube-proxy/kubeconfig --master=https://api.internal.prd.k8s.local --oom-score-adj=-998 --resource-container="" --v=2 > /tmp/pipe 2>&1
我们使用 Calico 作为 CNI:
到目前为止,我已经尝试过:
- 使用
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
- 问题仍然存在。 - (玩弄 ELB 设置,希望能解决问题¯_(ツ)_/¯)
- 在 Kube-Proxy 中查找错误,发现很少出现以下情况:
E0801 04:10:57.269475 1 reflector.go:205] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:85:无法列出 *core.Endpoints:获取https://api。 internal.prd.k8s.local/api/v1/endpoints?limit=500&resourceVersion=0:拨号 tcp:在 10.176.0.2:53 上查找 api.internal.prd.k8s.local:没有这样的主机
...和...
E0801 04:09:48.075452 1 proxier.go:1667] 无法执行 iptables-restore:退出状态 1(iptables-restore:第 7 行失败) I0801 04:09:48.075496 1 proxier.go:1669] iptables 后关闭本地端口- 恢复失败
我找不到任何描述此类问题的内容,并将不胜感激。欢迎提出有关如何继续和排除故障的想法。
最好的,一个