我正在使用 Kubernetes v1.20.10 裸机安装。它有1个主节点和3个工作节点。该应用程序只是提供 HTTP 请求。
我正在基于 (HPA) Horizontal Pod Autoscaler 扩展部署,我注意到负载在 Pod 之间分布不均匀。只有第一个 Pod 获得了 95% 的负载,而另一个 Pod 的负载非常低。
我尝试了这里提到的答案,但没有成功:Kubernetes service does not distribution requests Between pods
我正在尝试添加 calico 网络策略以允许我的命名空间与 kube-system 命名空间通信。但在我的 k8s 集群 kube-system 中没有附加标签,因此我无法在其中选择 pod。以下是我尝试过的但它不起作用。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-kube-system
namespace: advanced-policy-demo
spec:
podSelector: {} # select all pods in current namespace.
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels: {}
podSelector:
matchLabels:
tier: control-plane
egress:
- to:
- namespaceSelector:
matchLabels: {}
podSelector:
matchLabels:
tier: control-plane
Run Code Online (Sandbox Code Playgroud)
$ kubectl describe ns kube-system
Name: kube-system
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No resource limits.
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以仅通过名称来选择名称空间?
仅启用出口网络策略时,Pod 重新启动后所有就绪性和活动性检查都会失败。
这是我在描述 pod 时看到的:
警告不健康 115s (x7 超过 2m55s) kubelet,就绪探测失败:获取http://10.202.158.105:80/health/ready : dial tcp 10.202.158.105:80: connect: 连接被拒绝 警告不健康 115s (x7 超过 2m55s) kubelet ,活性探测失败:获取http://10.202.158.105:80/health/live:拨打tcp 10.202.158.105:80:连接:连接被拒绝
如果我禁用这些策略,运行状况检查将立即恢复运行。如果 Pod 在应用网络策略之前已经正常运行,它将继续工作。
我还尝试使用此策略将每个名称空间列入白名单:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-ingress-all
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector: {}
ports:
- protocol: TCP
port: 80
- protocol: TCP
port: 8080
Run Code Online (Sandbox Code Playgroud)
我很难找到有关如何解决此问题的任何指导。是否需要启用出口策略才能允许 kubelet 监控 Pod 运行状况检查?
该 Pod 在 Azure Kubernetes 服务内部运行并使用 Calico 网络。
我已经在数字海洋中安装了我的 kubernetes 集群(1master,3worker)。
问题是我在这个集群中同时安装了 flannel 和 calico。
我想从我的集群中完全删除 calico 还是可以拥有多个 CNI?
我正在尝试通过 kubectl 访问 mongodb 复制集,所以我不会将其公开到互联网,我无法使用 OpenVPN,因为 Calico 阻止了它。
所以我正在使用这个脚本:
export MONGO_POD_NAME1=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[0].metadata.name}")
export MONGO_POD_NAME2=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[1].metadata.name}")
export MONGO_POD_NAME3=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[2].metadata.name}")
echo $MONGO_POD_NAME1, $MONGO_POD_NAME2, $MONGO_POD_NAME3
kubectl port-forward --namespace develop $MONGO_POD_NAME1 27020:27017 & p3=$!
kubectl port-forward --namespace develop $MONGO_POD_NAME2 27021:27017 & p4=$!
kubectl port-forward --namespace develop $MONGO_POD_NAME3 27022:27017 & p5=$!
wait -n
[ "$?" -gt 1 ] || kill "$p3" "$p4" "$p5"
wait …Run Code Online (Sandbox Code Playgroud) 我在使用 Kubernetes 集群的 BGP 对等点时遇到问题。我的集群由 3 个主节点和 2 个工作节点构建,在 Unbuntu 18.04 上运行。etcd 是外部配置的,但在 2 个主节点上运行。最初使用 pod cidr 172.16.0.0/16 进行初始化,但最近更改为 192.168.220.0/24。我已经安装了 Calico 的最新版本。当我配置每个服务 1 个的副本集时,每个服务似乎都工作正常。当我运行多个 Pod 时,我配置的服务有时会出现连接问题,有时则不会。
经过一番研究,我发现问题可能是 Calico 配置错误。当我运行 calicoctl node status 时,我看到了这一点。
在 calico 方面,我发现它与 BGP 对等互连有关,但我不知道出了什么问题。这些节点具有 IP 连接。到端口 TCP 179 的 telnet 会话也成功。接下来我可以检查什么?任何帮助,将不胜感激。
我对 Calico IP 有点困惑:
如果我使用以下命令将 calico 添加到 kubernetes 集群
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Run Code Online (Sandbox Code Playgroud)
CALICO_IPV4POOL_CIDR 为 192.168.0.0/16,因此 IP 范围为 192.168.0.0 至 192.168.255.255
现在我已经使用以下命令启动了集群:
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.56.30
Run Code Online (Sandbox Code Playgroud)
因此,现在 Pod 的 IP 地址(使用 Pod 网络 CIDR)将在:20.96.0.0 到 20.111.255.255 之间
这两个不同的IP是什么?我的 Pod 正在获取 IP 地址 20.96.205.192 等。
我想知道是否有人可以简要概述一下所有不同的Kubernetes网络覆盖之间的差异/优势.入门指南(http://kubernetes.io/docs/getting-started-guides/scratch/#network)提到以下内容:
但并没有真正解释它们之间的差异是什么,或者每个人的优缺点是什么.我想知道是否有人可以让我知道我应该使用哪种解决方案用于裸机CentOS 7集群.
谢谢!
虽然有一些像我一样的问题,但修复对我不起作用。我使用 kubernetes v1.9.3 二进制文件并使用 flannel 和 calico 来设置 kubernetes 集群。应用 calico yaml 文件后,它会卡在创建第二个 pod 上。我究竟做错了什么?日志并不清楚到底出了什么问题
kubectl get pods --all-namespaces
root@kube-master01:/home/john/cookem/kubeadm-ha# kubectl logs calico-node-
n87l7 --namespace=kube-system
Error from server (BadRequest): a container name must be specified for pod
calico-node-n87l7, choose one of: [calico-node install-cni]
root@kube-master01:/home/john/cookem/kubeadm-ha# kubectl logs calico-node-
n87l7 --namespace=kube-system install-cni
Installing any TLS assets from /calico-secrets
cp: can't stat '/calico-secrets/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
kubectl describe pod calico-node-n87l7回报
Name: calico-node-n87l7
Namespace: kube-system
Node: kube-master01/10.100.102.62
Start Time: Thu, 22 …Run Code Online (Sandbox Code Playgroud) 我使用 kubespray 部署了一个全新的 k8s 集群,一切正常,但所有与 calico 相关的 pod 尚未准备好。经过几个小时的调试,我找不到 calico pod 崩溃的原因。我什至禁用/停止了整个防火墙服务,但没有任何改变。
另一件重要的事情是calicoctl node status输出不稳定,每次调用都会显示不同的内容:
Calico process is not running.
Run Code Online (Sandbox Code Playgroud)
Calico process is running.
None of the BGP backend processes (BIRD or GoBGP) are running.
Run Code Online (Sandbox Code Playgroud)
Calico process is running.
IPv4 BGP status
+----------------+-------------------+-------+----------+---------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+----------------+-------------------+-------+----------+---------+
| 192.168.231.42 | node-to-node mesh | start | 06:23:41 | Passive |
+----------------+-------------------+-------+----------+---------+
IPv6 BGP status
No IPv6 peers found.
Run Code Online (Sandbox Code Playgroud)
另一个经常出现的日志是以下消息: …