zoukankan      html  css  js  c++  java
  • k8s 机器搭建之etcd

    生成证书

    k8s 集群内部通过https通信的,需要签发两个证书,一个给apiserver另一个给etcd。

    由于是集群内部使用所以证书自己签发就可以,无需通过正规CA机构购买。证书生成工具有两种openssl  和 cfssl  ,这里采用的是cfssl  ,cfssl 是通过json 文件来生成证书的。

    一、安装cfssl ,安装过程省略。

    二、生成根CA证书

    
    
    1、生成证书依据的配置文件
    cat ca-config.json                   

    {
    "signing": { "default": { "expiry": "87600h"     }, "profiles": { "www": { "expiry": "87600h",  #有效期 "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } }
    2、用于生成根CA证书的请求文件
    cat ca-csr.json      { "CN": "etcd CA", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "Beijing", "ST": "Beijing" } ] }

    3、生成ca 根证书
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

    产生 ca-key.pem ca.pem

    三、生成etcd 证书

    1、制作证书的请求文件
    [root@k8s-master-1 cert]# cat server-csr.json { "CN": "etcd", "hosts": [ "10.10.118.161", "10.10.118.164", "10.10.118.165" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "BeiJing", "ST": "BeiJing" } ] }

    2、根据根CA证书和秘钥及证书请求文件生成etcd 的证书及秘钥
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

    etcd 集群搭建

    etcd 分布式机器,有主备节点之分,选举机制,为了高可用一般都是搭建集群,集群实例数必须是奇数,最小规模3 ,3个最多可以故障1个,5个最多可故障2个,7个最多可故障3个。

    本地搭建用的是编译好的二进制文件以及配置

    [root@k8s-master-1 soft]# ls etcd bin cfg ssl

     [root@k8s-master-1 soft]# ls etcd.service
     etcd.service

    cat etcd/cfg/etcd.conf

    #[Member]
    ETCD_NAME="etcd-1"                             #当前节点名字,名字不能重复
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://10.10.118.161:2380"          #当前机器ip
    ETCD_LISTEN_CLIENT_URLS="https://10.10.118.161:2379"

    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://10.10.118.161:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://10.10.118.161:2379"
    ETCD_INITIAL_CLUSTER="etcd-1=https://10.10.118.161:2380,etcd-2=https://10.10.118.162:2380,etcd-3=https://10.10.118.163:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"            #集群之间通信所用token
    ETCD_INITIAL_CLUSTER_STATE="new"                  #新建,如果已经存在,再加入的话就是exsiting

    cat etcd.service

    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=notify
    EnvironmentFile=/data/etcd/cfg/etcd.conf
    ExecStart=/data/etcd/bin/etcd 
            --name=${ETCD_NAME} 
            --data-dir=${ETCD_DATA_DIR} 
            --listen-peer-urls=${ETCD_LISTEN_PEER_URLS} 
            --listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 
            --advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} 
            --initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} 
            --initial-cluster=${ETCD_INITIAL_CLUSTER} 
            --initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} 
            --initial-cluster-state=new 
            --cert-file=/data/etcd/ssl/server.pem 
            --key-file=/data/etcd/ssl/server-key.pem 
            --peer-cert-file=/data/etcd/ssl/server.pem 
            --peer-key-file=/data/etcd/ssl/server-key.pem 
            --trusted-ca-file=/data/etcd/ssl/ca.pem 
            --peer-trusted-ca-file=/data/etcd/ssl/ca.pem
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target

    创建目录,移动文件(三个机器都重复下面操作,注意每个节点配置文件中Ip 更改,以及节点名字更改)

    mkdir  /data/
    mv etcd /data/
    mv etcd.service /usr/lib/systemd/system/etcd.service
    systemctl daemon-reload
    systemctl start etcd              #启动第一个会卡主,因为在寻找其他节点,启动第二个后就会正常了
    把之前生成的秘钥证书复制到ssl 目录


    检查机器是否正常

    /data/etcd/bin/etcdctl --cert-file=/data/etcd/ssl/ca.pem --cert-file=/data/etcd/ssl/server.pem --key-file=/data/etcd/ssl/server-key.pem --endpoints="https://10.10.118.161:2379,https://10.10.118.164:2379,https://10.10.118.165:2379"  cluster-health
  • 相关阅读:
    G++ 中文使用教程[转]
    PreparedStatement是如何大幅度提高性能的[转]
    .net 2.0(c#)下简单的FTP应用程序
    Remoting服务集成到IIS的简单总结
    转:xml一些知识
    [翻译]简单谈谈事件与委托 (转)
    觉得不错
    winform的一些知识
    xml 基本语法
    简单的信息采集程序示例(小偷程序) (转)
  • 原文地址:https://www.cnblogs.com/fanggege/p/13236782.html
Copyright © 2011-2022 走看看