kubernetes - Kubernetes + calico + 副本集
问题描述
所以我发现自己处于一个非常棘手的境地。我正在尝试创建一个简单的副本集,但不幸的是我遇到了印花布的一些问题。
我有 2 个 VM 在 OracleVM 上运行。我将它们配置为使用 enp0s8 接口。master节点的ip是192.168.56.2,worker节点的ip是192.168.56.3
这是我在 Kubernetes 中所做的。首先,我正在创建 kubernetes 主节点:
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.56.2
成功初始化后,我正在运行:
export KUBECONFIG=/etc/kubernetes/admin.conf
现在我通过运行创建 POD 网络:
kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
之后我成功地从工作节点加入。每当我启动副本时:
*** 编辑:我不必创建副本集来获得与 calico-node 创建卡住的相同结果
kubectl create -f replicaset-definition.yml
其中 yml 如下所示:
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 2
selector:
matchLabels:
app: myapp
我正在创建一个新的 calico-node 最终会卡住
calico-node-mcb5g 0/1 Running 6 8m58s
calico-node-t9p5n 1/1 Running 0 12m
如果我
kubectl logs -n kube-system calico-node-mcb5g -f
在上面运行,我会得到以下日志:
2020-03-18 14:45:40.585 [INFO][8] startup.go 275: Using NODENAME environment for node name
2020-03-18 14:45:40.585 [INFO][8] startup.go 287: Determined node name: kubenode1
2020-03-18 14:45:40.587 [INFO][8] k8s.go 228: Using Calico IPAM
2020-03-18 14:45:40.588 [INFO][8] startup.go 319: Checking datastore connection
2020-03-18 14:46:10.589 [INFO][8] startup.go 334: Hit error connecting to datastore - retry error=Get https://10.96.0.1:443/api/v1/nodes/foo: dial tcp 10.96.0.1:443: i/o timeout
2020-03-18 14:46:41.591 [INFO][8] startup.go 334: Hit error connecting to datastore - retry error=Get https://10.96.0.1:443/api/v1/nodes/foo: dial tcp 10.96.0.1:443: i/o timeout
我尝试配置 calico.yml 并在 env 中添加以下行:
- name: IP_AUTODETECTION_METHOD
value: "interface=enp0s8"
但结果还是一样。
非常感谢您阅读本文,如果您有任何建议,我将不胜感激!!!
解决方案
好的,就这样吧。看起来是因为服务 CIDR 和主机 CIDR 重叠而导致 calico 节点崩溃。
如果我启动主节点并将 CIDR 更改为:
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.56.2
奇迹般有效。
推荐阅读
- google-bigquery - 如何对特定列中的字符串值进行分组,并使用分组字符串创建和附加列?
- php - 工厂创建的对象有错误的值
- angular - 开玩笑单元测试检查唯一值
- python - ValueError,没有足够的值来使用 Discord API 解包
- pine-script - 函数内部无法访问输入变量
- web-scraping - 抓取存储在数据库中的元素
- javascript - 如何使 javascript 手风琴支持移动设备?- WordPress
- python - 给定信噪比,如何将干净的信号与噪声信号结合起来?
- python - Flask SocketIo:测试事件的发射
- python - 检查网格中对角线相邻数字的最大乘积