zoukankan      html  css  js  c++  java
  • K8s集群部署(一)------ETCD集群部署

    环境说明

    三台主机:

    k8s-master    10.0.3.225

    k8s-node1     10.0.3.226

    k8s-node2     10.0.3.227

    配置主机名解析

    [root@k8s-master kubernetes]# vim /etc/hosts
    10.0.3.225 k8s-master
    10.0.3.226 k8s-node1
    10.0.3.227 k8s-node2

    关闭防火墙和SElinux

    [root@k8s-master kubernetes]# systemctl stop firewalld
    
    [root@k8s-master kubernetes]# getenforce 
    Disabled

    设置环境变量

    vim  /root/.bash_profile
    
    PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
    source
    /root/.bash_profile

    为了拷贝方便,设置SSH免密

    [root@k8s-master src]# ssh-keygen
    [root@k8s-master src]# ssh-copy-id 10.0.3.225
    [root@k8s-master src]# ssh-copy-id 10.0.3.226
    [root@k8s-master src]# ssh-copy-id 10.0.3.227

    系统环境初始化

    1.安装Docker(三台操作)

    第一步:使用国内Docker源

    [root@linux-node1 ~]# cd /etc/yum.repos.d/
    [root@linux-node1 yum.repos.d]# wget 
     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    第二步:Docker安装:

    [root@linux-node1 ~]# yum install -y docker-ce

    第三步:启动后台进程:

    [root@linux-node1 ~]# systemctl start docker

    2.准备部署目录(三台操作)

        mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}

    3.准备软件包百度网盘下载地址:(在mastrt操作)

    [https://pan.baidu.com/s/1zs8sCouDeCQJ9lghH1BPiw](https://pan.baidu.com/s/1zs8sCouDeCQJ9lghH1BPiw)
    cd  /usr/local/
    unzip k8s-v1.10.1-manual.zip
    cd k8s-v1.10.1-manual/k8s-v1.10.1/
    mv * /usr/local/src/
     k8s官网地址:https://github.com/kubernetes


    4.解压软件包(在mastrt操作)

    cd /usr/local/src/
    tar zxvf kubernetes.tar.gz  && 
    tar zxvf kubernetes-server-linux-amd64.tar.gz  && 
    tar zxvf kubernetes-client-linux-amd64.tar.gz && 
    tar zxvf kubernetes-node-linux-amd64.tar.gz 

    所有软件包都在kubernetes目录下了

    [root@k8s-master src]# ls
    cfssl-certinfo_linux-amd64  cfssl_linux-amd64             etcd-v3.2.18-linux-amd64.tar.gz     kubernetes                            kubernetes-node-linux-amd64.tar.gz    kubernetes.tar.gz
    cfssljson_linux-amd64       cni-plugins-amd64-v0.7.1.tgz  flannel-v0.10.0-linux-amd64.tar.gz  kubernetes-client-linux-amd64.tar.gz  kubernetes-server-linux-amd64.tar.gz
    [root@k8s-master src]# cd kubernetes/
    [root@k8s-master kubernetes]# ls
    addons  client  cluster  docs  examples  hack  kubernetes-src.tar.gz  LICENSES  node  README.md  server  third_party  version
    [root@k8s-master kubernetes]# 

    手动制作CA证书

    1.安装 CFSSL

    上面的安装包,已经下载好cfssl了。移动/opt/kubernetes/bin/即可。

    cd /usr/local/src
    chmod +x cfssl*  && 
    mv cfssl-certinfo_linux-amd64 /opt/kubernetes/bin/cfssl-certinfo && 
    mv cfssljson_linux-amd64  /opt/kubernetes/bin/cfssljson  && 
    mv cfssl_linux-amd64  /opt/kubernetes/bin/cfssl

    复制cfssl命令文件到k8s-node1和k8s-node2节点。如果实际中多个节点,就都需要同步复制。

    [root@k8s-master src]# scp /opt/kubernetes/bin/cfssl* 10.0.3.226:/opt/kubernetes/bin/
    [root@k8s-master src]# scp /opt/kubernetes/bin/cfssl* 10.0.3.227:/opt/kubernetes/bin/

    CFSSL下载地址:

    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

    2.初始化cfssl

    [root@k8s-master src]# cd /usr/local/src/
    [root@k8s-master src]# mkdir ssl && cd ssl
    [root@k8s-master ssl]# cfssl print-defaults config > config.json
    [root@k8s-master ssl]# cfssl print-defaults csr > csr.json

    3.创建用来生成 CA 文件的 JSON 配置文件

    [root@k8s-master ssl]# vim ca-config.json
    {
      "signing": {
        "default": {
          "expiry": "8760h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "8760h"
          }
        }
      }
    }

    4.创建用来生成 CA 证书签名请求(CSR)的 JSON 配置文件

    [root@k8s-master ssl]#  vim ca-csr.json
    {
      "CN": "kubernetes",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }

    5.生成CA证书(ca.pem)和密钥(ca-key.pem)

    [root@k8s-master ssl]#  cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    2018/11/13 16:12:11 [INFO] generating a new CA key and certificate from CSR
    2018/11/13 16:12:11 [INFO] generate received request
    2018/11/13 16:12:11 [INFO] received CSR
    2018/11/13 16:12:11 [INFO] generating key: rsa-2048
    2018/11/13 16:12:12 [INFO] encoded CSR
    2018/11/13 16:12:12 [INFO] signed certificate with serial number 672169645465776774912654230107317469678160608506
    
    [root@k8s-master ssl]# ls -l ca*
    -rw-r--r-- 1 root root  290 Nov 13 16:10 ca-config.json
    -rw-r--r-- 1 root root 1001 Nov 13 16:12 ca.csr
    -rw-r--r-- 1 root root  208 Nov 13 16:11 ca-csr.json
    -rw------- 1 root root 1675 Nov 13 16:12 ca-key.pem
    -rw-r--r-- 1 root root 1359 Nov 13 16:12 ca.pem

    6.分发证书

    [root@k8s-master ssl]# cp ca.csr ca.pem ca-key.pem ca-config.json /opt/kubernetes/ssl

    #scp证书到k8s-node1和k8s-node2节点 [root@k8s
    -master ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 10.0.3.226:/opt/kubernetes/ssl ca.csr 100% 1001 1.0KB/s 00:00 ca.pem 100% 1359 1.3KB/s 00:00 ca-key.pem 100% 1675 1.6KB/s 00:00 ca-config.json 100% 290 0.3KB/s 00:00 [root@k8s-master ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 10.0.3.227:/opt/kubernetes/ssl ca.csr 100% 1001 1.0KB/s 00:00 ca.pem 100% 1359 1.3KB/s 00:00 ca-key.pem 100% 1675 1.6KB/s 00:00 ca-config.json 100% 290 0.3KB/s 00:00

    部署ETCD集群

    详细介绍查看etcd官网:  https://github.com/coreos/etcd-operator

    0.准备etcd软件包

    [root@k8s-master src]# pwd 
    /usr/local/src
    [root@k8s-master src]# tar zxvf etcd-v3.2.18-linux-amd64.tar.gz 
    [root@k8s-master src]# cd etcd-v3.2.18-linux-amd64/
    [root@k8s-master etcd-v3.2.18-linux-amd64]# ls
    Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
    [root@k8s
    -master etcd-v3.2.18-linux-amd64]# cp etcd etcdctl /opt/kubernetes/bin/ [root@k8s-master etcd-v3.2.18-linux-amd64]# cp etcd etcdctl 10.0.3.226:/opt/kubernetes/bin/ [root@k8s-master etcd-v3.2.18-linux-amd64]# scp etcd etcdctl 10.0.3.227:/opt/kubernetes/bin/

    下载地址:wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.tar.gz

    1.创建 etcd 证书签名请求:

    [root@k8s-master ssl]# cd /usr/local/src/ssl/
    [root@k8s-master ssl]# vim etcd-csr.json
    {
      "CN": "etcd",
      "hosts": [
        "127.0.0.1",
    "10.0.3.225",         #指定etcd节点的IP地址
    "10.0.3.226",
    "10.0.3.227"
      ],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }

    2.生成 etcd 证书和私钥:

    [root@k8s-master ssl]# cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem 
    >   -ca-key=/opt/kubernetes/ssl/ca-key.pem 
    >   -config=/opt/kubernetes/ssl/ca-config.json 
    >   -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
    
    会生成一下证书文件
    [root@k8s-master ssl]# ls -l etcd*
    -rw-r--r-- 1 root root 1062 Nov 13 16:40 etcd.csr
    -rw-r--r-- 1 root root  278 Nov 13 16:39 etcd-csr.json
    -rw------- 1 root root 1675 Nov 13 16:40 etcd-key.pem
    -rw-r--r-- 1 root root 1436 Nov 13 16:40 etcd.pem
    
    

    3.将证书移动到/opt/kubernetes/ssl目录下

    [root@k8s-master ssl]# cp etcd*.pem /opt/kubernetes/ssl
    [root@k8s-master ssl]# scp etcd*.pem 10.0.3.226:/opt/kubernetes/ssl
    etcd-key.pem                                                                                                                                                                     100% 1675     1.6KB/s   00:00    
    etcd.pem                                                                                                                                                                         100% 1436     1.4KB/s   00:00    
    [root@k8s-master ssl]# scp etcd*.pem 10.0.3.227:/opt/kubernetes/ssl
    etcd-key.pem                                                                                                                                                                     100% 1675     1.6KB/s   00:00    
    etcd.pem 
    
    

    4.设置ETCD配置文件

    [root@k8s-master ssl]# vim /opt/kubernetes/cfg/etcd.conf
    #[member]
    ETCD_NAME="etcd-node1"  #唯一的,每个节点不能一样
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"   #数据存放目录
    #ETCD_SNAPSHOT_COUNTER="10000"
    #ETCD_HEARTBEAT_INTERVAL="100"
    #ETCD_ELECTION_TIMEOUT="1000"
    ETCD_LISTEN_PEER_URLS="https://10.0.3.225:2380"   #集群之间通信使用   
    ETCD_LISTEN_CLIENT_URLS="https://10.0.3.225:2379,https://127.0.0.1:2379"  #是给客户端使用   
    #ETCD_MAX_SNAPSHOTS="5"
    #ETCD_MAX_WALS="5"
    #ETCD_CORS=""
    #[cluster]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://10.0.3.225:2380"
    # if you use different ETCD_NAME (e.g. test),
    # set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
    ETCD_INITIAL_CLUSTER="etcd-node1=https://10.0.3.225:2380,etcd-node2=https://10.0.3.226:2380,etcd-node3=https://10.0.3.227:2380"
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_INITIAL_CLUSTER_TOKEN="k8s-etcd-cluster"
    ETCD_ADVERTISE_CLIENT_URLS="https://10.0.3.225:2379"
    #[security]
    CLIENT_CERT_AUTH="true"
    ETCD_CA_FILE="/opt/kubernetes/ssl/ca.pem"
    ETCD_CERT_FILE="/opt/kubernetes/ssl/etcd.pem"
    ETCD_KEY_FILE="/opt/kubernetes/ssl/etcd-key.pem"
    PEER_CLIENT_CERT_AUTH="true"
    ETCD_PEER_CA_FILE="/opt/kubernetes/ssl/ca.pem"
    ETCD_PEER_CERT_FILE="/opt/kubernetes/ssl/etcd.pem"
    ETCD_PEER_KEY_FILE="/opt/kubernetes/ssl/etcd-key.pem"
    
    

    5.创建ETCD系统服务

    [root@k8s-master ssl]# vim /etc/systemd/system/etcd.service
    [Unit]
    Description=Etcd Server
    After=network.target
    
    [Service]
    Type=simple
    WorkingDirectory=/var/lib/etcd
    EnvironmentFile=-/opt/kubernetes/cfg/etcd.conf
    # set GOMAXPROCS to number of processors
    ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /opt/kubernetes/bin/etcd"
    Type=notify
    
    [Install]
    WantedBy=multi-user.target
    
    

    6.重新加载系统服务

    [root@k8s-master ssl]# systemctl daemon-reload 
    [root@k8s-master ssl]# systemctl enable etcd.service 

    etcd.conf和etcd.service拷贝到其他节点
    [root@k8s-master ssl]# scp /opt/kubernetes/cfg/etcd.conf 10.0.3.226:/opt/kubernetes/cfg/
    etcd.conf                                                                                                                                                                        100% 1148     1.1KB/s   00:00    
    [root@k8s-master ssl]# scp /opt/kubernetes/cfg/etcd.conf 10.0.3.227:/opt/kubernetes/cfg/
    etcd.conf                                                                                                                                                                        100% 1148     1.1KB/s   00:00    
    [root@k8s-master ssl]# scp /etc/systemd/system/etcd.service 10.0.3.226:/opt/kubernetes/cfg/
    etcd.service                                                                                                                                                                     100%  314     0.3KB/s   00:00    
    [root@k8s-master ssl]# scp /etc/systemd/system/etcd.service 10.0.3.227:/opt/kubernetes/cfg/
    etcd.service   

    其他节点需要修改一下配置。以node1为例,node2一样要修改。
    [root@k8s-node1 yum.repos.d]# vim /opt/kubernetes/cfg/etcd.conf
      2 ETCD_NAME="etcd-node2"
      7 ETCD_LISTEN_PEER_URLS="https://10.0.3.226:2380"
      8 ETCD_LISTEN_CLIENT_URLS="https://10.0.3.226:2379,https://127.0.0.1:2379"
     13 ETCD_INITIAL_ADVERTISE_PEER_URLS="https://10.0.3.226:2380"
     19 ETCD_ADVERTISE_CLIENT_URLS="https://10.0.3.226:2379"

    同样需要reload一下。
    systemctl daemon-reload
    systemctl enable etcd


    在所有节点上创建etcd存储目录并启动etcd
    mkdir /var/lib/etcd
    systemctl start etcd
    systemctl status  etcd
    netstat -lntup|grep 23
    需要在所有的 etcd 节点重复上面的步骤,直到所有机器的 etcd 服务都已启动。

    7.验证集群

    [root@k8s-node1 ~]#  etcdctl --endpoints=https://10.0.3.225:2379 
    >   --ca-file=/opt/kubernetes/ssl/ca.pem 
    >   --cert-file=/opt/kubernetes/ssl/etcd.pem 
    >   --key-file=/opt/kubernetes/ssl/etcd-key.pem cluster-health
    member 981424cb437f053 is healthy: got healthy result from https://10.0.3.226:2379
    member 7a30be4a7549b699 is healthy: got healthy result from https://10.0.3.227:2379
    member d12a89096ab8db09 is healthy: got healthy result from https://10.0.3.225:2379
    cluster is healthy
  • 相关阅读:
    MySQL基础知识-安装MySQL
    java 安装环境 疑问(1)
    java 安装环境
    “64位调试操作花费的时间比预期要长",无法运行调试解决办法
    office完全卸载
    完全卸载oraclean安装
    不能安装64位office提示已安装32位的
    java 之 基础加强(一)
    java 之 dom4j解析xml
    java 之 schema解析
  • 原文地址:https://www.cnblogs.com/root0/p/9953287.html
Copyright © 2011-2022 走看看