问题标签 [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.
docker - pod 路由与 IP 不匹配
我在裸机上使用 CoreOS 1235.6.0 中的 Kubernetes 1.5.2,覆盖网络使用 calico v1.0.2。容器正在获取正确的 IP 地址,但它们的路由不匹配:
结果,Pod 网络中断。传出流量超时,无论是 ICMP 还是 TCP,无论是到主机、同一主机上的另一个 pod、apiserver 还是公共 Internet。唯一有效的流量是这个 pod 与自己对话。
这是我运行 kubelet 的方式:
calico 配置是标准配置。
我配置错了什么?
kubernetes - 外部名称服务的 Kubernetes 网络策略
我们正在考虑为我们的 Kubernetes 集群设置网络策略。但是,在我们的至少一个命名空间中,我们有一个用于 AWS RDS 实例的 ExternalName 服务(kubernetes 参考 - 服务类型)。我们希望将到此 ExternalName 服务的流量限制为来自一组特定的 pod,或者如果这不可能,则来自特定的命名空间。命名空间隔离策略或NetworkPolicy 资源似乎都不适用于 ExternalName 服务。在搜索了Weave和Project Calico的文档后,似乎没有提及此类功能。
是否可以将到 ExternalName 服务的网络流量限制为来自特定的一组 pod 或来自特定的命名空间?
kubernetes - calico-node 在工作节点上启动失败
我正在尝试安装 Kubernetes。
配置细节:
控制器
- 操作系统:CoreOS alpha (1339.0.0) 的容器 Linux
- 局域网IP:192.168.1.2
FQDN:coreos-2.tux-in.com
用于安装的环境变量:
/li>
工人
- 操作系统:CoreOS alpha (1339.0.0) 的容器 Linux
- 局域网IP:192.168.1.3
FQDN:coreos-3.tux-in.com
用于安装的环境变量
/li>
我使用我的 forkcoreos-kubernetes
来安装控制器和工作程序(https://github.com/kfirufk/coreos-kubernetes)。
kubectl get nodes
返回
kubectl get pods --all-namespaces
返回:
我注意到有两个服务没有完全工作..
kube-dns-3675956729-r7hhf
- 4 个服务中有 3 个已准备好
calico-node-xzpp2
- 工作节点 (coreos-3.tux-in.com) 上的 calico 节点不断重启
kubectl describe pod calico-node-xzpp2 --namespace=kube-system
返回:
还有更多关于install-cni calico-node 的消息Created
。Started eents for
and
kubectl logs calico-node-xzpp2 --namespace=kube-system -c install-cni OR calico-node
返回一个空输出。
我该如何进一步调查这个问题?
谢谢
kubernetes - 使用 calico 的路由在 kubernetes 中不起作用
我有
- kubernetes v1.6.0 由 kubeadm v1.6.1 设置
- 由官方yaml设置的印花布
- iptables v1.6.0
- 节点由阿里云提供
问题:
cni 网络不工作。任何部署都只能从运行它的节点访问。我怀疑它与路由表冲突/丢失有关,因为我在 Vultr Cloud 上有另一个集群工作正常,具有相同的设置步骤。
集群信息:
我检查了每个 pod 的日志,没有发现任何错误。
主信息:内部ip:10.27.219.50
工作节点信息:内部 ip:10.30.248.80
flannel - 为什么 CNI conf 文件名以数字为前缀
我正在尝试创建一个 CNI conf 文件。为什么 CNI conf 文件名以数字为前缀?例如“10-calico.conf”“10-weave.conf”“10-Flannel.conf”。有遵循的惯例吗?
apache-spark - Spark 在 mesos 上与 CNI 共存的能力
使用 Spark-18232 允许为执行程序提供 CNI 网络名称,我在让执行程序在有或没有执行程序的动态分配的情况下工作时遇到问题。我不断收到下面的堆栈跟踪。我将 Calico (CNI) 与 Mesos 一起使用。
networking - Kubernetes:使用 UDP 广播查找其他 pod
我有一个集群遗留应用程序,我试图在 Kubernetes 上部署。集群中的节点使用 UDP 广播找到彼此。由于各种原因,我无法改变这种行为。
当部署在 docker 上时,这将通过创建一个共享网络(即docker network create --internal mynet
,通向一个子网,例如 172.18.0.0/16),并将包含集群节点的容器连接到同一个网络(docker network connect mynet instance1
和docker network connect mynet instance2
)来完成。然后,每个启动的实例都会使用 172.18.255.255 在此网络上定期广播它的 IP 地址,直到它们形成一个集群。多个这样的集群可以驻留在同一个 kubernetes 命名空间中,因此我最好为这些 pod 创建自己的“私有网络”以避免端口冲突。
有没有办法在 kubernetes 上创建这样的网络,或者以其他方式欺骗应用程序相信它已连接到这样的网络(假设其他节点的 IP 地址是已知的)?我正在运行的 kubernetes 集群使用 Calico。
docker - 直接从同一网络中的机器访问 kubernetes pod
我在同一个网络上有 4 台服务器;
- 10.0.0.10:Kubernetes 主控
- 10.0.0.11:Kubernetes 节点 1
- 10.0.0.12:Kubernetes 节点 2
- 10.0.0.20:普通 ubuntu 服务器(未安装 kubernetes)
我使用 Calico 作为网络提供商,按照https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/中的说明设置了一个 kubernetes 集群。
我可以通过以下命令成功运行一个 pod(我以带有 ssh 访问的 Ubuntu docker 映像为例)
kubectl get
并且可以使用and看到这个 pod 的 IP 地址kubectl describe
(在这种情况下,pod 的 IP 是 192.168.65.74。)
然后我确认以下连接已启用
- kubernetes master/nodes (10.0.0.10 ~ 10.0.0.12) -> pod (192.168.65.74)
- pod (192.168.65.74) -> kubernetes master/nodes (10.0.0.10 ~ 10.0.0.12)
- 吊舱 (192.168.65.74) -> 普通 ubuntu 服务器 (10.0.0.20)
但是,我没有建立以下连接,我想请教人们怎么做;
- 普通 ubuntu 服务器 (10.0.0.20) -> pod (192.168.65.74)
我尝试向ubuntu服务器(10.0.0.20)添加路由表,希望kubernetes主节点可以作为路由器,但没有成功;
我怀疑Kubernetes master中的iptables有什么关系,但我不知道该怎么做。
有人可以帮我解决这个问题。
顺便说一句,我知道我想做的事情可能与 kubernetes 或 docker 的基本原理不同。也许我应该使用 kubernetes 的 Service 机制,但是我需要这种在 pod 和实际服务器之间访问的透明性。
amazon-ec2 - 出站连接间歇性无法响应
我在进行诸如 RPC 调用之类的出站连接时遇到间歇性响应失败,它由我的应用程序 (Java) 记录,如下所示:
org.apache.http.NoHttpResponseException: RPC_SERVER.com:443 failed to respond !
出站连接流
Kubernetes Node -> ELB for internal NGINX -> internal NGINX ->[Upstream To]-> ELB RPC server -> RPC server instance
通常的 EC2 (AWS) 上不会出现此问题。
我可以通过这样做在我的本地主机上重现
- 在端口 9200 中运行作为客户端的主应用程序
- 在 9205 端口运行 RPC 服务器
- 客户端将使用端口 9202 与服务器建立连接
- 运行
$ socat TCP4-LISTEN:9202,reuseaddr TCP4:localhost:9205
它将侦听端口 9202,然后将其转发到 9205(RPC 服务器) - 使用在 iptables 上添加规则
$ sudo iptables -A INPUT -p tcp --dport 9202 -j DROP
- 触发 RPC 调用,它将返回与我之前描述的相同的错误消息
假设
由 kubernetes 上的 NAT 引起,据我所知,NAT 正在使用conntrack
,conntrack
如果 TCP 连接空闲一段时间会中断,客户端会假设连接仍然建立,尽管它不是。(CMIIW)
我也尝试过扩展kube-dns
到 10 个副本,但问题仍然存在。
节点规范
使用 calico 作为网络插件
$ sysctl -a | grep conntrack
Kubelet 配置
Kubectl 版本
Kube 代理日志
$ lsb_release -s -d
Ubuntu 16.04.3 LTS
kubernetes - 无法更新 Kubernetes 集群上的 Calico CNI 配置
我发现,直到几个月前,Pods 的“hostPort”配置才适用于基于 CNI 的集成。这意味着,对于任何使用 Calico 的 Kubernetes 集群,都不可能直接在某个 Node 的端口上公开 Pod 的端口,而不使用 Service 或标记hostNetwork=true
(这有点极端)。
从 Kubernetes 1.7.0 开始,这是可能的,但必须更改 Calico 配置才能让新的“portmap”CNI 插件进入,这是我正在尝试做的,但没有成功。我从一个新的 IBM Bluemix Container Service 集群开始。
我的 calico-node DaemonSet 具有以下 CNI_NETWORK_CONFIG 环境变量:
我在这里所做的只是试图用以下配置替换它:
calico-node
强制重启后 Pod 运行成功,但我自己的 Pod 在初始化过程中一直卡在“Pending”状态,并出现来自“kubelet NODE_IP”的事件“Error syncing pod”。
我很感激在这个问题上的一些帮助。提前致谢。