首页 > 解决方案 > 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"

但结果还是一样。

非常感谢您阅读本文,如果您有任何建议,我将不胜感激!!!

标签: kubernetesreplicasetproject-calicocalico

解决方案


好的,就这样吧。看起来是因为服务 CIDR 和主机 CIDR 重叠而导致 calico 节点崩溃。

如果我启动主节点并将 CIDR 更改为:

kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.56.2

奇迹般有效。

这有很大帮助: 集群创建成功,但 calico-node-xx pod 处于 CrashLoopBackOff 状态


推荐阅读