• 【云原生Kubernetes系列第三篇】二进制部署单节点Kubernetes(k8s)v1.20



    在这里插入图片描述

    一、CA证书

    CA证书中包含密钥对
    CA证书可以对通信加密,同时标识身份的唯一性
    .pem :证书
    .
    
    • 1
    • 2
    • 3
    • 4

    1.1 制作官方颁发的证书:

    ① 、创建ca密钥(文件定义) ca-key.pem
    ② 、创建ca证书(文件定义) ca.pem
    
    • 1
    • 2

    1.2 制作master端的证书(用于内部加密通讯,同时为了给与Client端颁发master签名的证书)

    ① 创建过程:需要以下几部
        设置私钥 确保安全加密 			.pem	
    	私钥签名 确保身份真实			.csr
    	制作证书(需要CA官方颁发)		cert.pem
    ② 创建私钥
    ③ 私钥签名
    ④ 使用ca证书与密钥证书签名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.3 制作node端证书

    ① 由master端制作node端密钥
    ② 对node端的证书进行签名
    ③ 创建一个配置文件(区别于服务端,进行客户端验证)
    ④ 生成证书
    
    • 1
    • 2
    • 3
    • 4

    二、K8S 二进制集群部署

    k8s 默认有三种部署方式:Minikube 、kubeadm、 二进制
    
    • 1

    常见的K8S按照部署方式:

    ●Minikube

    Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。
    部署地址:https://kubernetes.io/docs/setup/minikube
    
    • 1
    • 2

    ●Kubeadmin

    Kubeadmin也是一个工具,提供kubeadm init和kubeadm join,用于快速部署K8S集群,相对简单。
    https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm
    
    • 1
    • 2

    ●二进制安装部署

    生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群,新手推荐。
    https://github.com/kubernetes/kubernetes/releases
    
    • 1
    • 2

    2.1 K8S二进制部署

    分为几个模块部署

    1、ETCD集群
    2、FLANNEL网络
    3、单master部署
    4、node部署
    5、多master部署

    2.2 实验环境

    主机IP地址组件
    k8s集群master01192.168.10.27kube-apiserver kube-controller-manager kube-scheduler
    k8s集群node01192.168.10.28kubelet kube-proxy docker
    k8s集群node02192.168.10.29kubelet kube-proxy docker
    etcd集群节点1192.168.10.27etcd
    etcd集群节点2192.168.10.28etcd
    etcd集群节点3192.168.10.29etcd

    在这里插入图片描述
    考虑到电脑性能,我将etcd部署在master和node节点上,并且我这边只搭建两个node节点

    2.3 操作系统初始化配置

    #关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    #-X清除自定义的规则
    
    #关闭selinux
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    
    #关闭swap
    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab 
    
    #根据规划设置主机名
    hostnamectl set-hostname master01
    hostnamectl set-hostname node01
    hostnamectl set-hostname node02
    
    #在master添加hosts
    cat >> /etc/hosts << EOF
    192.168.10.27 master01
    192.168.10.28 node01
    192.168.10.29 node02
    EOF
    
    #调整内核参数
    cat > /etc/sysctl.d/k8s.conf << EOF
    #开启网桥模式,可将网桥的流量传递给iptables链
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    #关闭ipv6协议
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv4.ip_forward=1
    EOF
    
    sysctl --system
    
    #时间同步
    yum install ntpdate -y
    ntpdate time.windows.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    2.4 部署 etcd 集群

    etcd是Coreos团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用rart协议作为致性算法,etcd是go语言编写的。

    etcd作为服务发现系统,有以下的特点:

    • 简单:安装配置简单,而且提供了HTTPAPI进行交互,使用也很简单安全:支持SSL证书验证
    • 快速:单实例支持每秒2k+读操作
    • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

    etcd 目前默认使用2379端口提供HTTPAPI服务,2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。

    即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯

    etcd在生产环境中一般推荐集群方式部著。由于etcd的leader选举机制,要求至少为3台或以上的奇数台。

    2.5 准备签发证书环境

    CFSSL是CloudFlare公司开源的一款PKI/TLS工具。CFSSL包含一个命令行工具和一个用于签名、验证和捆绑TLS证书的HTTPAPI服务。使用Go语言编写。

    CFSSIL使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL提供了方便的命令行生成配置文件。

    CFSSL用来为etcd提供TLS证书,它支持签三种类型的证书:

     1.client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如kube-apiserver 访问 etcd;
     2.server证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如etcd对外提供服务;
     3.peer证书,相互之间连接时使用的证书,如etcd节点之间进行验证和通信。
    
    • 1
    • 2
    • 3

    这里为了方便全部都使用同一套证书认证,生产环境中一般不这样使用。

    2.6 准备cfssl证书生成工具

    在master01节点上操作

    linux下载两种方式:
    
    wget 源URL地址 [-o 指定路径]
    
    curl -L 源URL地址 -o 指定路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #准备cfssl证书生成工具
    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
    
    #也可以下载好上传上去
    chmod +x /usr/local/bin/cfssl*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    cfssl:#证书签发的工具命令
    cfssljson:#将cfss1生成的证书(json格式)变为文件承载式证书
    cfssl-certinfo:#验证证书的信息
    cfssl-certinfo-cert <证书名称>  #查看证书的信息
    
    • 1
    • 2
    • 3
    • 4

    2.7 生成Etcd证书

    mkdir /opt/k8s
    cd /opt/k8s/
    
    #上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
    chmod +x etcd-cert.sh etcd.sh
    
    #创建用于生成CA证书、etcd 服务器证书以及私钥的目录
    mkdir /opt/k8s/etcd-cert
    mv etcd-cert.sh etcd-cert/
    cd /opt/k8s/etcd-cert/
    ./etcd-cert.sh   #生成了CA证书、etcd服务器证书以及私钥
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    etcd-cert.sh文件解读

    #!/bin/bash
    #配置证书生成策略,让 CA 软件知道颁发有什么功能的证书,生成用来签发其他组件证书的根证书
    #可以定义多个项目,指定功能、日期等
    cat > ca-config.json <<EOF
    {
      "signing": {
        "default": {
          "expiry": "87600h"  
        },
        "profiles": {
          "www": {
             "expiry": "87600h",
             "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ]
          }
        }
      }
    }
    EOF
    
    #ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;
    #后续在签名证书时会使用某个 profile;此实例只有一个 www 模板。
    #expiry:指定了证书的有效期,87600h 为10年,如果用默认值一年的话,证书到期后集群会立即宕掉
    #signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
    #key encipherment:表示使用非对称密钥加密,如 RSA 加密;
    #server auth:表示client可以用该 CA 对 server 提供的证书进行验证;
    #client auth:表示server可以用该 CA 对 client 提供的证书进行验证;
    #注意标点符号,最后一个字段一般是没有逗号的。
    
    
    #-----------------------
    #生成CA证书和私钥(根证书和私钥)
    #特别说明: cfssl和openssl有一些区别,openssl需要先生成私钥,然后用私钥生成请求文件,最后生成签名的证书和私钥等,但是cfssl可以直接得到请求文件。
    cat > ca-csr.json <<EOF
    {
        "CN": "etcd",
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "L": "Beijing",
                "ST": "Beijing"
            }
        ]
    }
    EOF
    
    #CN:Common Name,浏览器使用该字段验证网站或机构是否合法,一般写的是域名 
    #key:指定了加密算法,一般使用rsa(size:2048)
    #CCountry,国家
    #ST:State,州,省
    #LLocality,地区,城市
    #O: Organization Name,组织名称,公司名称
    #OU: Organization Unit Name,组织单位名称,公司部门
    
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    
    #生成的文件:
    #ca-key.pem:根证书私钥
    #ca.pem:根证书
    #ca.csr:根证书签发请求文件
    
    #cfssl gencert -initca <CSRJSON>:使用 CSRJSON 文件生成生成新的证书和私钥。如果不添加管道符号,会直接把所有证书内容输出到屏幕。
    #注意:CSRJSON 文件用的是相对路径,所以 cfssl 的时候需要 csr 文件的路径下执行,也可以指定为绝对路径。
    #cfssljson 将 cfssl 生成的证书(json格式)变为文件承载式证书,-bare 用于命名生成的证书文件。
    
    
    #-----------------------
    #生成 etcd 服务器证书和私钥
    cat > server-csr.json <<EOF
    {
        "CN": "etcd",
        "hosts": [
        "192.168.10.27",
        "192.168.10.28",
        "192.168.10.29"
        ],
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "L": "BeiJing",
                "ST": "BeiJing"
            }
        ]
    }
    EOF
    
    #hosts:将所有 etcd 集群节点添加到 host 列表,需要指定所有 etcd 集群的节点 ip 或主机名不能使用网段,新增 etcd 服务器需要重新签发证书。
    
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
    
    #生成的文件:
    #server.csr:服务器的证书请求文件
    #server-key.pem:服务器的私钥
    #server.pem:服务器的数字签名证书
    
    #-config:引用证书生成策略文件 ca-config.json
    #-profile:指定证书生成策略文件中的的使用场景,比如 ca-config.json 中的 www
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109

    2.8 启动etcd服务

    #上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
    cd /opt/k8s/
    tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
    
    mkdir -p /opt/etcd/{cfg,bin,ssl}
    
    cd /opt/k8s/etcd-v3.4.9-linux-amd64/
    #etcd相关的服务管理文件移动到bin目录下
    mv etcd etcdctl /opt/etcd/bin/
    #证书文件复制到ssl文件下
    cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/
    
    cd /opt/k8s/
    ./etcd.sh etcd01 192.168.10.27 etcd02=https://192.168.10.28:2380,etcd03=https://192.168.10.29:2380
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.9 启动etcd服务

    #上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
    cd /opt/k8s/
    tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
    
    mkdir -p /opt/etcd/{cfg,bin,ssl}
    
    cd /opt/k8s/etcd-v3.4.9-linux-amd64/
    #etcd相关的服务管理文件移动到bin目录下
    mv etcd etcdctl /opt/etcd/bin/
    #证书文件复制到ssl文件下
    cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/
    
    cd /opt/k8s/
    ./etcd.sh etcd01 192.168.10.27
    etcd02=https://192.168.10.28:2380,etcd03=https://192.168.10.29:2380
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    etcd.sh文件解读

    #!/bin/bash
    
    #创建etcd配置文件/opt/etcd/cfg/etcd
    ETCD_NAME=$1
    ETCD_IP=$2
    ETCD_CLUSTER=$3
    
    WORK_DIR=/opt/etcd
    
    cat > $WORK_DIR/cfg/etcd  <<EOF
    #[Member]
    ETCD_NAME="${ETCD_NAME}"
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"
    ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"
    
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379"
    ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    EOF
    
    #Member:成员配置
    #ETCD_NAME:节点名称,集群中唯一。成员名字,集群中必须具备唯一性,如etcd01
    #ETCD_DATA_DIR:数据目录。指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定-wal-dir,还会存储WAL文件;如果不指定会用缺省目录
    #ETCD_LISTEN_PEER_URLS:集群通信监听地址。用于监听其他member发送信息的地址。ip为全0代表监听本机所有接口
    #ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址。用于监听etcd客户发送信息的地址。ip为全0代表监听本机所有接口
    
    #Clustering:集群配置
    #ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址。其他member使用,其他member通过该地址与本member交互信息。一定要保证从其他member能可访问该地址。静态配置方式下,该参数的value一定要同时在--initial-cluster参数中存在
    #ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址。etcd客户端使用,客户端通过该地址与本member交互信息。一定要保证从客户侧能可访问该地址
    #ETCD_INITIAL_CLUSTER:集群节点地址。本member使用。描述集群中所有节点的信息,本member根据此信息去联系其他member
    #ETCD_INITIAL_CLUSTER_TOKEN:集群Token。用于区分不同集群。本地如有多个集群要设为不同
    #ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群。
    
    
    #创建etcd.service服务管理文件
    cat > /usr/lib/systemd/system/etcd.service <<EOF
    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=notify
    EnvironmentFile=${WORK_DIR}/cfg/etcd
    ExecStart=${WORK_DIR}/bin/etcd \
    --cert-file=${WORK_DIR}/ssl/server.pem \
    --key-file=${WORK_DIR}/ssl/server-key.pem \
    --trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
    --peer-cert-file=${WORK_DIR}/ssl/server.pem \
    --peer-key-file=${WORK_DIR}/ssl/server-key.pem \
    --peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
    --logger=zap \
    --enable-v2
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    #--enable-v2:开启 etcd v2 API 接口。当前 flannel 版本不支持 etcd v3 通信
    #--logger=zap:使用 zap 日志框架。zap.Logger 是go语言中相对日志库中性能最高的
    #--peer开头的配置项用于指定集群内部TLS相关证书(peer 证书),这里全部都使用同一套证书认证
    #不带--peer开头的的参数是指定 etcd 服务器TLS相关证书(server 证书),这里全部都使用同一套证书认证
    
    
    systemctl daemon-reload
    systemctl enable etcd
    systemctl restart etcd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    #复制配置文件到其他节点
    scp -r /opt/etcd/ root@192.168.10.28:/opt/
    scp -r /opt/etcd/ root@192.168.10.29:/opt/
    scp /usr/lib/systemd/system/etcd.service root@192.168.10.28:/usr/lib/systemd/system/
    scp /usr/lib/systemd/system/etcd.service root@192.168.10.29:/usr/lib/systemd/system/
    
    #在 node01 节点上操作
    vim /opt/etcd/cfg/etcd
    #[Member]
    ETCD_NAME="etcd02"											#修改
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://192.168.10.28:2380"			#修改
    ETCD_LISTEN_CLIENT_URLS="https://192.168.10.28:2379"		#修改
    
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.28:2380"		#修改
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.28:2379"				#修改
    ETCD_INITIAL_CLUSTER="etcd01 192.168.10.27 etcd02=https://192.168.10.28:2380,etcd03=https://192.168.10.29:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    
    systemctl start etcd
    systemctl enable etcd
    systemctl status etcd
    
    
    #在node02 节点上操作
    vim /opt/etcd/cfg/etcd
    #[Member]
    ETCD_NAME="etcd03"											#修改
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://192.168.10.29:2380"			#修改
    ETCD_LISTEN_CLIENT_URLS="https://192.168.10.29:2379"		#修改
    
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.29:2380"		#修改
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.29:2379"				#修改
    ETCD_INITIAL_CLUSTER="etcd01 192.168.10.27
    etcd02=https://192.168.10.28:2380,etcd03=https://192.168.10.29:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    
    systemctl start etcd
    systemctl enable etcd
    systemctl status etcd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    systemctl daemon-reload
    systemctl restart etcd.service
    systemctl enable etcd.service 
    systemctl status etcd.service
    
    • 1
    • 2
    • 3
    • 4

    2.10 检查群集状态

    #检查etcd群集状态
    #ETCDCTL_API=3表示v3版本的接口
    cd /opt/etcd/ssl
    #可查看到哪个是leader
    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.27:2379,https://192.168.10.28:2379,https://192.168.10.29:2379" endpoint status --write-out=table
    
    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.27:2379,https://192.168.10.28:2379,https://192.168.10.29:2379" endpoint health --write-out=table
    
    #查看etcd集群成员列表
    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.27:2379,https://192.168.10.28:2379,https://192.168.10.29:2379" --write-out=table member list
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    –cert-file:识别HTTPS端使用SSL证书文件
    –key-file:使用此SSL密钥文件标识HTTPS客户端
    –ca-file:使用此CA证书验证启用https的服务器的证书
    –endpoints:集群中以逗号分隔的机器地址列表
    cluster-health:检查etcd集群的运行状况
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    正则表达式高阶(二)
    自己搭的centOS7虚拟机,ping baidu出现Temporary failure in name resolution
    java面向对象
    Cholesterol-PEG-Amine,CLS-PEG-NH2,胆固醇-聚乙二醇-氨基脂质衍生物试剂供应
    中枢神经系统解剖结构图,神经系统的解剖结构
    JavaScript判断是否为空对象的几种方法
    Python 零代码的22个小游戏集合 freegames
    基于安卓android微信小程序的刷题系统
    从好玩到好用:程序员用AI提效的那些事儿 | 京东云技术团队
    原生php 实现redis登录五次被禁,隔天再登陆
  • 原文地址:https://blog.csdn.net/weixin_59663288/article/details/126035694