无法设置HA etcd集群

问题描述 投票:0回答:1

我想在多个节点上设置一个运行的etcd集群。我已经在Hyper-V终端上运行了2台unbuntu 18.04计算机。

我在kubernetes官方网站上遵循了该指南:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/

因此,我更改了几个脚本并在HOST0和HOST1上执行了此脚本

export HOST0=192.168.101.90
export HOST1=192.168.101.91

mkdir -p /tmp/${HOST0}/ /tmp/${HOST1}/


ETCDHOSTS=(${HOST0} ${HOST1} ${HOST2})
NAMES=("infra0" "infra1")

for i in "${!ETCDHOSTS[@]}"; do
HOST=${ETCDHOSTS[$i]}
NAME=${NAMES[$i]}
cat << EOF > /tmp/${HOST}/kubeadmcfg.yaml
apiVersion: "kubeadm.k8s.io/v1beta2"
kind: ClusterConfiguration
etcd:
    local:
        serverCertSANs:
        - "${HOST}"
        peerCertSANs:
        - "${HOST}"
        extraArgs:
            initial-cluster: ${NAMES[0]}=https://${ETCDHOSTS[0]}:2380,${NAMES[1]}=https://${ETCDHOSTS[1]}:2380
            initial-cluster-state: new
            name: ${NAME}
            listen-peer-urls: https://${HOST}:2380
            listen-client-urls: https://${HOST}:2379
            advertise-client-urls: https://${HOST}:2379
            initial-advertise-peer-urls: https://${HOST}:2380
EOF
done

此后,我在HOST0上执行了此命令

kubeadm init phase certs etcd-ca

我在HOST0上创建了所有必要对象

# cleanup non-reusable certificates
find /etc/kubernetes/pki -not -name ca.crt -not -name ca.k
kubeadm init phase certs etcd-peer --config=/tmp/${HOST1}/kubeadmcfg.yaml
kubeadm init phase certs etcd-healthcheck-client --config=/tmp/${HOST1}/kubeadmcfg.yaml
kubeadm init phase certs apiserver-etcd-client --config=/tmp/${HOST1}/kubeadmcfg.yaml
cp -R /etc/kubernetes/pki /tmp/${HOST1}/
find /etc/kubernetes/pki -not -name ca.crt -not -name ca.key -type f -delete


kubeadm init phase certs etcd-server --config=/tmp/${HOST0}/kubeadmcfg.yaml
kubeadm init phase certs etcd-peer --config=/tmp/${HOST0}/kubeadmcfg.yaml
kubeadm init phase certs etcd-healthcheck-client --config=/tmp/${HOST0}/kubeadmcfg.yaml
kubeadm init phase certs apiserver-etcd-client --config=/tmp/${HOST0}/kubeadmcfg.yaml
# No need to move the certs because they are for HOST0

# clean up certs that should not be copied off this host
find /tmp/${HOST1} -name ca.key -type f -delete

之后,我将文件复制到第二个ETCTD节点(HOST1)。在此之前,我创建了root用户mbesystem

USER=mbesystem
 HOST=${HOST1}
 scp -r /tmp/${HOST}/* ${USER}@${HOST}:
 ssh ${USER}@${HOST}
 USER@HOST $ sudo -Es
 root@HOST $ chown -R root:root pki
 root@HOST $ mv pki /etc/kubernetes/

我将检查所有文件都在HOST0和HOST1上。

在HOST0上,我使用以下命令启动了etcd集群:>

kubeadm init phase etcd local --config=/tmp/192.168.101.90/kubeadmcfg.yaml

在Host1上,我开始使用:

kubeadm init phase etcd local --config=/home/mbesystem/kubeadmcfg.yaml

执行后:

docker run --rm -it \
--net host \
-v /etc/kubernetes:/etc/kubernetes k8s.gcr.io/etcd:3.4.3-0 etcdctl \
--cert /etc/kubernetes/pki/etcd/peer.crt \
--key /etc/kubernetes/pki/etcd/peer.key \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--endpoints https://192.168.101.90:2379 endpoint health --cluster

我发现集群无法正常运行,我会收到拒绝连接的消息。

enter image description here

我不知道出了什么问题。任何帮助将不胜感激。

我想在多个节点上设置一个运行的etcd集群。我在Hyper-V终端上运行了2台unbuntu 18.04机器。我在kubernetes官方网站上遵循了该指南:https:// ...

kubernetes ubuntu-18.04 etcd
1个回答
0
投票

我已经研究过,复制了您提供的链接中的内容:Kubernetes.io: Setup ha etcd with kubeadm ,并设法使其正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.