opsnull / follow-me-install-kubernetes-cluster

和我一步步部署 kubernetes 集群
Other
7.42k stars 2.9k forks source link

配置flannel过程,向etcd 写入集群pod信息报 client: response is invalid json #558

Open yanzuo0609 opened 4 years ago

yanzuo0609 commented 4 years ago

文档版本 etcd v3.4。

现象描述 [root@k8s-node-01 work]# ETCDCTL_API=2 etcdctl \ tLen": 21, "Backend": {"Type": "vxlan"}}'> --endpoints=${ETCD_ENDPOINTS} \

--ca-file=/opt/k8s/work/ca.pem \ --cert-file=/opt/k8s/work/flanneld.pem \ --key-file=/opt/k8s/work/flanneld-key.pem \ mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}' Error: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint

eggiter commented 4 years ago
  1. 如果是v3.4版本的etcd,etcd启动命令需要加上--enable-v2=true,v3.4默认不启动v2服务;
  2. --cert-file=/opt/k8s/work/flanneld.pem --> --cert-file=/etc/etcd/cert/etcd.pem
ReyRen commented 4 years ago
1. 如果是v3.4版本的etcd,启动命令需要加上`--enable-v2=true`,v3.4默认不启动v2服务;

2. `--cert-file=/opt/k8s/work/flanneld.pem`  --> `--cert-file=/etc/etcd/cert/etcd.pem `

老哥,你这解释的一个都不通啊

linjinbao666 commented 3 years ago

解决方案,亲测有效:

  1. 修改etcd.service systemd unit文件
    
    ....
    --heartbeat-interval=250 \
    --election-timeout=2000 \
    --enable-v2=true
    Restart=on-failure
    RestartSec=5
    LimitNOFILE=65536

[Install] WantedBy=multi-user.target


加入`  --enable-v2=true`,注意上一行结尾的反斜杠

2.  调整写入命令
```shell
ETCDCTL_API=2 etcdctl   --endpoints=${ETCD_ENDPOINTS}   --ca-file=/opt/k8s/work/ca.pem   --cert-file=/opt/k8s/work/flanneld.pem   --key-file=/opt/k8s/work/flanneld-key.pem   mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}'

FLANNEL_ETCD_PREFIX 环境变量需要自己手动加一下。我是随便给了个值。

aluopy commented 3 years ago

解决方案,亲测有效:

  1. 修改etcd.service systemd unit文件
 ....
  --heartbeat-interval=250 \
  --election-timeout=2000 \
  --enable-v2=true
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

加入--enable-v2=true,注意上一行结尾的反斜杠

  1. 调整写入命令
ETCDCTL_API=2 etcdctl   --endpoints=${ETCD_ENDPOINTS}   --ca-file=/opt/k8s/work/ca.pem   --cert-file=/opt/k8s/work/flanneld.pem   --key-file=/opt/k8s/work/flanneld-key.pem   mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}'

FLANNEL_ETCD_PREFIX 环境变量需要自己手动加一下。我是随便给了个值。

niubi 666

shuish0071 commented 2 years ago

执行后还是报错

`[@master01 /opt/k8s/work]# ETCDCTL_API=2 etcdctl --endpoints=${ETCD_ENDPOINTS} --ca-file=/opt/k8s/work/ca.pem --cert-file=/opt/k8s/work/flanneld.pem --key-file=/opt/k8s/work/flanneld-key.pem mk ${FLANNEL_ETCD_PREFIX}/config '{"Network":"'${CLUSTER_CIDR}'", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}'

Error: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint`

shuish0071 commented 2 years ago

不好意思,反应慢了,需要所有 etcd 节点都修改 /etc/systemd/system/etcd.service,并重启 etcd 服务即可执行后续设置命令 cat /etc/systemd/system/etcd.service [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target Documentation=https://github.com/coreos

[Service] Type=notify WorkingDirectory=/data/k8s/etcd/data ExecStart=/opt/k8s/bin/etcd \ --data-dir=/data/k8s/etcd/data \ --wal-dir=/data/k8s/etcd/wal \ --name=master01 \ --cert-file=/etc/etcd/cert/etcd.pem \ --key-file=/etc/etcd/cert/etcd-key.pem \ --trusted-ca-file=/etc/kubernetes/cert/ca.pem \ --peer-cert-file=/etc/etcd/cert/etcd.pem \ --peer-key-file=/etc/etcd/cert/etcd-key.pem \ --peer-trusted-ca-file=/etc/kubernetes/cert/ca.pem \ --peer-client-cert-auth \ --client-cert-auth \ --listen-peer-urls=https://10.19.1.99:2380 \ --initial-advertise-peer-urls=https://10.19.1.99:2380 \ --listen-client-urls=https://10.19.1.99:2379,http://127.0.0.1:2379 \ --advertise-client-urls=https://10.19.1.99:2379 \ --initial-cluster-token=etcd-cluster-0 \ --initial-cluster=master01=https://10.19.1.99:2380,master02=https://10.19.1.100:2380,master03=https://10.18.1.62:2380 \ --initial-cluster-state=new \ --auto-compaction-mode=periodic \ --auto-compaction-retention=1 \ --max-request-bytes=33554432 \ --quota-backend-bytes=6442450944 \ --heartbeat-interval=250 \ --election-timeout=2000 \ --enable-v2=true Restart=on-failure RestartSec=5 LimitNOFILE=65536

[Install] WantedBy=multi-user.target

重启服务: systemctl daemon-reload systemctl restart etcd.service