关于我们

质量为本、客户为根、勇于拼搏、务实创新

新闻公告

< 返回新闻公共列表

Kubernetes 1.8.4中如何安装Etcd

发布时间:2022-03-16 17:18:40

      在开始安装 Kubernetes 之前,需要先将一些必要系统创建完成,其中 Etcd 就是 Kubernetes 最重要的一环,Kubernetes会将大部分信息储存于Etcd上,来提供给其他节点索取,以确保整个集群运作与沟通正常。

创建集群 CA 与 Certificates

在这部分,将会需要产生 client 与 server 的各组件 certificates,并且替 Kubernetes admin user 产生 client 证书。

  • 建立/etc/etcd/ssl文件夹,然后进入目录。

    mkdir -p /etc/etcd/ssl && cd /etc/etcd/ssl
  • 生成ca-config.json与etcd-ca-csr.json文件,并产生 CA 密钥:
    生成ca-config.json文件

    cat <<EOF > ca-config.json
    {
        "signing": {
            "default": {
                "expiry": "87600h"        },
            "profiles": {
                "kubernetes": {
                    "usages": [
                        "signing",
                        "key encipherment",
                        "server auth",
                        "client auth"                ],
                    "expiry": "87600h"            }
            }
        }
    }
    EOF

    生成etcd-ca-csr.json文件

    cat <<EOF > etcd-ca-csr.json
    {
        "CN": "etcd",
        "key": {
            "algo": "rsa",
            "size": 2048    },
        "names": [
            {
                "C": "SC",
                "ST": "ChengDu",
                "L": "ChengDu",
                "O": "etcd",
                "OU": "Etcd Security"        }
        ]
    }EOF

    生成证书

    cfssl gencert -initca etcd-ca-csr.json | cfssljson -bare etcd-ca
  • 生成etcd-csr.json文件,并产生 kube-apiserver certificate 证书:
    生成etcd-csr.json文件

    cat <<EOF > etcd-csr.json
    {
        "CN": "etcd",
        "hosts": [
            "127.0.0.1",
            "10.0.0.162"    ],
        "key": {
            "algo": "rsa",
            "size": 2048    },
        "names": [
            {
                "C": "SC",
                "ST": "ChengDu",
                "L": "ChengDu",
                "O": "etcd",
                "OU": "Etcd Security"        }
        ]
    }EOF

    注意hosts更换成自己的IP,这里我的etcd只有一个节点并且在162节点上。

  • 生成证书

    cfssl gencert \
      -ca=etcd-ca.pem \
      -ca-key=etcd-ca-key.pem \
      -config=ca-config.json \
      -profile=kubernetes \
      etcd-csr.json | cfssljson -bare etcd

Etcd 安装与设定

  • 首先在master(162)节点下载 Etcd,并解压缩放到 /opt 底下与安装:

    export ETCD_URL="https://github.com/coreos/etcd/releases/download" cd && wget -qO-  "${ETCD_URL}/v3.2.9/etcd-v3.2.9-linux-amd64.tar.gz" | tar -zx
    mv etcd-v3.2.9-linux-amd64/etcd* /usr/local/bin/ && rm -rf etcd-v3.2.9-linux-amd64
  • 完成后新建 Etcd Group 与 User,并建立 Etcd 配置文件目录:

    groupadd etcd && useradd -c "Etcd user" -g etcd -s /sbin/nologin -r etcd
  • 配置etcd.conf和etcd.service
    生成etcd.conf

    cat <<EOF > /etc/etcd/etcd.conf# [member]ETCD_NAME=node162
    ETCD_DATA_DIR=/var/lib/etcd
    ETCD_LISTEN_PEER_URLS=https://0.0.0.0:2380
    ETCD_LISTEN_CLIENT_URLS=https://0.0.0.0:2379
    ETCD_PROXY=off# [cluster]ETCD_ADVERTISE_CLIENT_URLS=https://10.0.0.162:2379
    ETCD_INITIAL_ADVERTISE_PEER_URLS=https://10.0.0.162:2380
    ETCD_INITIAL_CLUSTER=node162=https://10.0.0.162:2380
    ETCD_INITIAL_CLUSTER_STATE=new
    ETCD_INITIAL_CLUSTER_TOKEN=etcd-k8s-cluster# [security]ETCD_CERT_FILE="/etc/etcd/ssl/etcd.pem"ETCD_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"ETCD_CLIENT_CERT_AUTH="true"ETCD_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"ETCD_AUTO_TLS="true"ETCD_PEER_CERT_FILE="/etc/etcd/ssl/etcd.pem"ETCD_PEER_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"ETCD_PEER_CLIENT_CERT_AUTH="true"ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"ETCD_PEER_AUTO_TLS="true"EOF

    若与该教程 IP 不同的话,请用自己 IP 取代10.0.0.162。
    生成etcd.service

    cat <<EOF > /lib/systemd/system/etcd.service[Unit]Description=Etcd ServiceAfter=network.target[Service]Environment=ETCD_DATA_DIR=/var/lib/etcd/defaultEnvironmentFile=-/etc/etcd/etcd.confType=notifyUser=etcdPermissionsStartOnly=trueExecStart=/usr/local/bin/etcdRestart=on-failureRestartSec=10LimitNOFILE=65536[Install]WantedBy=multi-user.targetEOF
  • 通过简单指令验证:

    export CA="/etc/etcd/ssl"ETCDCTL_API=3 etcdctl \
        --cacert=${CA}/etcd-ca.pem \
        --cert=${CA}/etcd.pem \
        --key=${CA}/etcd-key.pem \
        --endpoints="https://10.0.0.162:2379" \
        endpoint health

    若与该教程 IP 不同的话,请用自己 IP 取代10.0.0.162。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:leidianyun@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

/template/Home/ZdsjuX168/PC/Static

网站通知

尊敬的雷电云用户,您好:

雷电云停止运营,仅保留域名续费!

雷电云停止运营,仅保留域名续费雷电云停止运营,仅保留域名续费
雷电云停止运营,仅保留域名续费雷电云停止运营,仅保留域名续费

我知道了