etcd搭建

    环境准备

新装好三台虚拟机,系统均为Centos7.5:如何安装虚拟机

IP和K8S节点以及etcd对应关系:

为了节约资源将etcd集群和k8s放在统一服务器(建议分开)
192.168.2.207(k8s_1)     k8s master节点     etcd1
192.168.2.181(k8s_2)     k8s node节点     etcd2
192.168.2.182(k8s_3)     k8s node节点     etcd3

在三台虚拟机上面同时进行如下操作:

关闭防火墙:

    systemctl stop firewalld.service 停止防火墙
    systemctl disable firewalld.service 禁止开机启动

关闭selinux,首先编辑/etc/selinux/config,之后执行setenforce 0:

关闭swap分区:

配置转发相关参数:

    cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    vm.swappiness=0
    EOF
     
    sysctl --system

加载ipvs模块:

    cat << EOF > /etc/sysconfig/modules/ipvs.modules
    #!/bin/bash
    ipvs_modules_dir="/usr/lib/modules/\`uname -r\`/kernel/net/netfilter/ipvs"
    for i in \`ls \$ipvs_modules_dir | sed  -r 's#(.*).ko.xz#\1#'\`; do
        /sbin/modinfo -F filename \$i  &> /dev/null
        if [ \$? -eq 0 ]; then
            /sbin/modprobe \$i
        fi
    done
    EOF
     
    chmod +x /etc/sysconfig/modules/ipvs.modules
    bash /etc/sysconfig/modules/ipvs.modules

安装cfssl:

    #在master节点安装即可!!!
     
    wget -O /bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget -O /bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    wget -O /bin/cfssl-certinfo  https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
    for cfssl in `ls /bin/cfssl*`;do chmod +x $cfssl;done;

安装docker:

    #安装 yum-utils工具
    yum -y install yum-utils
    #添加docker的yum源
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
     
    #安装docker
    yum install -y docker-ce
    mkdir /etc/docker/
     
    #删除docker0网卡
    cat << EOF > /etc/docker/daemon.json
    {   "registry-mirrors": ["https://registry.docker-cn.com"],
        "live-restore": true,
        "default-shm-size": "128M",
        "bridge": "none",
        "max-concurrent-downloads": 10,
        "oom-score-adjust": -1000,
        "debug": false
    }    
    EOF    
     
    #开机启动&重启docker
    systemctl enable docker
    systemctl restart docker
        
    #重启后执行ip a命令,看不到docker0的网卡即可

docker安装成功:

docker0已经被干掉:

    安装etcd

准备etcd证书(在master节点操作):

    mkdir -pv $HOME/ssl && cd $HOME/ssl
        
    cat > ca-config.json << EOF
    {
      "signing": {
        "default": {
          "expiry": "87600h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "87600h"
          }
        }
      }
    }
    EOF
     
     
    cat > etcd-ca-csr.json << EOF
    {
      "CN": "etcd",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "Shenzhen",
          "L": "Shenzhen",
          "O": "etcd",
          "OU": "Etcd Security"
        }
      ]
    }
    EOF
     
     
     
        
    cat > etcd-csr.json << EOF
    {
        "CN": "etcd",
        "hosts": [
          "127.0.0.1",
          "192.168.2.207",
          "192.168.2.181",
          "192.168.2.182"
        ],
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "ST": "Shenzhen",
                "L": "Shenzhen",
                "O": "etcd",
                "OU": "Etcd Security"
            }
        ]
    }
    EOF
     
    #生成证书并复制证书至其他etcd节点
     
    cfssl gencert -initca etcd-ca-csr.json | cfssljson -bare etcd-ca
    cfssl gencert -ca=etcd-ca.pem -ca-key=etcd-ca-key.pem -config=ca-config.json -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
     
    mkdir -pv /etc/etcd/ssl
    cp etcd*.pem /etc/etcd/ssl
            
    scp -r /etc/etcd 192.168.2.207:/etc/
    scp -r /etc/etcd 192.168.2.181:/etc/
    scp -r /etc/etcd 192.168.2.182:/etc/

etcd1主机安装并启动etcd:

    yum install -y etcd
            
    cat << EOF > /etc/etcd/etcd.conf
    #[Member]
    #ETCD_CORS=""
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    #ETCD_WAL_DIR=""
    ETCD_LISTEN_PEER_URLS="https://192.168.2.207:2380"
    ETCD_LISTEN_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.207:2379"
    #ETCD_MAX_SNAPSHOTS="5"
    #ETCD_MAX_WALS="5"
    ETCD_NAME="etcd1"
    #ETCD_SNAPSHOT_COUNT="100000"
    #ETCD_HEARTBEAT_INTERVAL="100"
    #ETCD_ELECTION_TIMEOUT="1000"
    #ETCD_QUOTA_BACKEND_BYTES="0"
    #ETCD_MAX_REQUEST_BYTES="1572864"
    #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s"
    #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s"
    #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"
    #
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.2.207:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.207:2379"
    #ETCD_DISCOVERY=""
    #ETCD_DISCOVERY_FALLBACK="proxy"
    #ETCD_DISCOVERY_PROXY=""
    #ETCD_DISCOVERY_SRV=""
    ETCD_INITIAL_CLUSTER="etcd1=https://192.168.2.207:2380,etcd2=https://192.168.2.181:2380,etcd3=https://192.168.2.182:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="BigBoss"
    #ETCD_INITIAL_CLUSTER_STATE="new"
    #ETCD_STRICT_RECONFIG_CHECK="true"
    #ETCD_ENABLE_V2="true"
    #
    #[Proxy]
    #ETCD_PROXY="off"
    #ETCD_PROXY_FAILURE_WAIT="5000"
    #ETCD_PROXY_REFRESH_INTERVAL="30000"
    #ETCD_PROXY_DIAL_TIMEOUT="1000"
    #ETCD_PROXY_WRITE_TIMEOUT="5000"
    #ETCD_PROXY_READ_TIMEOUT="0"
    #
    #[Security]
    ETCD_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_CLIENT_CERT_AUTH="false"
    ETCD_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_AUTO_TLS="false"
    ETCD_PEER_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_PEER_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_PEER_CLIENT_CERT_AUTH="false"
    ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_PEER_AUTO_TLS="false"
    #
    #[Logging]
    #ETCD_DEBUG="false"
    #ETCD_LOG_PACKAGE_LEVELS=""
    #ETCD_LOG_OUTPUT="default"
    #
    #[Unsafe]
    #ETCD_FORCE_NEW_CLUSTER="false"
    #
    #[Version]
    #ETCD_VERSION="false"
    #ETCD_AUTO_COMPACTION_RETENTION="0"
    #
    #[Profiling]
    #ETCD_ENABLE_PPROF="false"
    #ETCD_METRICS="basic"
    #
    #[Auth]
    #ETCD_AUTH_TOKEN="simple"
    EOF
     
    chown -R etcd.etcd /etc/etcd
    systemctl enable etcd
    systemctl start etcd

etcd2主机安装并启动etcd:

    yum install -y etcd
     
    cat << EOF > /etc/etcd/etcd.conf
    #[Member]
    #ETCD_CORS=""
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    #ETCD_WAL_DIR=""
    ETCD_LISTEN_PEER_URLS="https://192.168.2.181:2380"
    ETCD_LISTEN_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.181:2379"
    #ETCD_MAX_SNAPSHOTS="5"
    #ETCD_MAX_WALS="5"
    ETCD_NAME="etcd2"
    #ETCD_SNAPSHOT_COUNT="100000"
    #ETCD_HEARTBEAT_INTERVAL="100"
    #ETCD_ELECTION_TIMEOUT="1000"
    #ETCD_QUOTA_BACKEND_BYTES="0"
    #ETCD_MAX_REQUEST_BYTES="1572864"
    #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s"
    #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s"
    #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"
    #
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.2.181:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.181:2379"
    #ETCD_DISCOVERY=""
    #ETCD_DISCOVERY_FALLBACK="proxy"
    #ETCD_DISCOVERY_PROXY=""
    #ETCD_DISCOVERY_SRV=""
    ETCD_INITIAL_CLUSTER="etcd1=https://192.168.2.207:2380,etcd2=https://192.168.2.181:2380,etcd3=https://192.168.2.182:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="BigBoss"
    #ETCD_INITIAL_CLUSTER_STATE="new"
    #ETCD_STRICT_RECONFIG_CHECK="true"
    #ETCD_ENABLE_V2="true"
    #
    #[Proxy]
    #ETCD_PROXY="off"
    #ETCD_PROXY_FAILURE_WAIT="5000"
    #ETCD_PROXY_REFRESH_INTERVAL="30000"
    #ETCD_PROXY_DIAL_TIMEOUT="1000"
    #ETCD_PROXY_WRITE_TIMEOUT="5000"
    #ETCD_PROXY_READ_TIMEOUT="0"
    #
    #[Security]
    ETCD_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_CLIENT_CERT_AUTH="false"
    ETCD_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_AUTO_TLS="false"
    ETCD_PEER_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_PEER_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_PEER_CLIENT_CERT_AUTH="false"
    ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_PEER_AUTO_TLS="false"
    #
    #[Logging]
    #ETCD_DEBUG="false"
    #ETCD_LOG_PACKAGE_LEVELS=""
    #ETCD_LOG_OUTPUT="default"
    #
    #[Unsafe]
    #ETCD_FORCE_NEW_CLUSTER="false"
    #
    #[Version]
    #ETCD_VERSION="false"
    #ETCD_AUTO_COMPACTION_RETENTION="0"
    #
    #[Profiling]
    #ETCD_ENABLE_PPROF="false"
    #ETCD_METRICS="basic"
    #
    #[Auth]
    #ETCD_AUTH_TOKEN="simple"
    EOF
     
    chown -R etcd.etcd /etc/etcd
    systemctl enable etcd
    systemctl start etcd

etcd3主机安装并启动etcd:

    yum install -y etcd
     
    cat << EOF > /etc/etcd/etcd.conf
    #[Member]
    #ETCD_CORS=""
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    #ETCD_WAL_DIR=""
    ETCD_LISTEN_PEER_URLS="https://192.168.2.182:2380"
    ETCD_LISTEN_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.182:2379"
    #ETCD_MAX_SNAPSHOTS="5"
    #ETCD_MAX_WALS="5"
    ETCD_NAME="etcd3"
    #ETCD_SNAPSHOT_COUNT="100000"
    #ETCD_HEARTBEAT_INTERVAL="100"
    #ETCD_ELECTION_TIMEOUT="1000"
    #ETCD_QUOTA_BACKEND_BYTES="0"
    #ETCD_MAX_REQUEST_BYTES="1572864"
    #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s"
    #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s"
    #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"
    #
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.2.182:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://127.0.0.1:2379,https://192.168.2.182:2379"
    #ETCD_DISCOVERY=""
    #ETCD_DISCOVERY_FALLBACK="proxy"
    #ETCD_DISCOVERY_PROXY=""
    #ETCD_DISCOVERY_SRV=""
    ETCD_INITIAL_CLUSTER="etcd1=https://192.168.2.207:2380,etcd2=https://192.168.2.181:2380,etcd3=https://192.168.2.182:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="BigBoss"
    #ETCD_INITIAL_CLUSTER_STATE="new"
    #ETCD_STRICT_RECONFIG_CHECK="true"
    #ETCD_ENABLE_V2="true"
    #
    #[Proxy]
    #ETCD_PROXY="off"
    #ETCD_PROXY_FAILURE_WAIT="5000"
    #ETCD_PROXY_REFRESH_INTERVAL="30000"
    #ETCD_PROXY_DIAL_TIMEOUT="1000"
    #ETCD_PROXY_WRITE_TIMEOUT="5000"
    #ETCD_PROXY_READ_TIMEOUT="0"
    #
    #[Security]
    ETCD_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_CLIENT_CERT_AUTH="false"
    ETCD_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_AUTO_TLS="false"
    ETCD_PEER_CERT_FILE="/etc/etcd/ssl/etcd.pem"
    ETCD_PEER_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
    #ETCD_PEER_CLIENT_CERT_AUTH="false"
    ETCD_PEER_TRUSTED_CA_FILE="/etc/etcd/ssl/etcd-ca.pem"
    #ETCD_PEER_AUTO_TLS="false"
    #
    #[Logging]
    #ETCD_DEBUG="false"
    #ETCD_LOG_PACKAGE_LEVELS=""
    #ETCD_LOG_OUTPUT="default"
    #
    #[Unsafe]
    #ETCD_FORCE_NEW_CLUSTER="false"
    #
    #[Version]
    #ETCD_VERSION="false"
    #ETCD_AUTO_COMPACTION_RETENTION="0"
    #
    #[Profiling]
    #ETCD_ENABLE_PPROF="false"
    #ETCD_METRICS="basic"
    #
    #[Auth]
    #ETCD_AUTH_TOKEN="simple"
    EOF
     
    chown -R etcd.etcd /etc/etcd
    systemctl enable etcd
    systemctl start etcd

检查集群状态:

    #在etcd1节点执行
     
    etcdctl --endpoints "https://127.0.0.1:2379"   --ca-file=/etc/etcd/ssl/etcd-ca.pem  \
    --cert-file=/etc/etcd/ssl/etcd.pem   --key-file=/etc/etcd/ssl/etcd-key.pem   cluster-health

发布了0 篇原创文章 · 获赞 0 · 访问量 535

猜你喜欢

转载自blog.csdn.net/qingdao666666/article/details/104668123
今日推荐