• Kubernetes1.91(K8s)安装部署过程(一)--证书安装


    安装前忠告:如果你用的是虚拟机,强烈不建议你使用克隆(链接克隆)的方式,至于完整克隆不知道有没有问题,每一台全新安装centos7系统最好。

    一、安装前主题环境准备

      1、docker安装

      建议使用官网yum源安装,添加yum源之后,直接yum install docker即可

      2、关闭所有节点的selinux

      最好修改配置文件为disabled,而不是临时更改,避免以后重启引起不必要的麻烦

      3、安装私有仓库环境Harbor

      具体安装过程参考我的博客:http://www.cnblogs.com/netsa/p/8124708.html

      4、基本架构

    IP 节点 备注  
    10.10.90.105 master etcd复用此节点  
    10.10.90.106 node1 etcd复用此节点  
    10.10.90.105 node2 etcd复用此节点  

    二、安装预览

    安装过程参考https://jimmysong.io/kubernetes-handbook/practice/install-kubernetes-on-centos.html,自己进行实践安装  

    1、创建 TLS 证书和秘钥

    2、创建kubeconfig 文件

    3、创建高可用etcd集群

    4、部署master节点

    5、安装flannel网络插件

    6、部署node节点

    7、安装kubedns插件

    8、安装dashboard(后面教程已经更换为coredns)插件

    9、安装heapster插件

    10、安装EFK插件

    三、部署步骤

      1、创建TLS证书和秘钥

      1)安装CFSSL工具

      复制全部粘贴的命令行执行,一步到位,操作节点master

    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    chmod +x cfssl_linux-amd64
    mv cfssl_linux-amd64 /usr/local/bin/cfssl
    
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    chmod +x cfssljson_linux-amd64
    mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
    
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
    chmod +x cfssl-certinfo_linux-amd64
    mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
    
    export PATH=/usr/local/bin:$PATH

      2)创建CA

      

    mkdir /root/ssl
    cd /root/ssl
    cfssl print-defaults config > config.json
    cfssl print-defaults csr > csr.json
    # 根据config.json文件的格式创建如下的ca-config.json文件
    # 过期时间设置成了 87600h
    cat > ca-config.json <<EOF
    {
      "signing": {
        "default": {
          "expiry": "87600h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "87600h"
          }
        }
      }
    }
    EOF
    字段说明
    
    ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
    signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
    server auth:表示client可以用该 CA 对server提供的证书进行验证;
    client auth:表示server可以用该CA对client提供的证书进行验证;
    

      

      3)创建CA证书签名请求

      

    创建 CA 证书签名请求
    
    创建 ca-csr.json 文件:
    cat >ca-csr.json << EOF
    {
      "CN": "kubernetes",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }
    EOF

    目前为止4个文件了。

      4)生成CA证书私钥

      

    $ cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    $ ls ca*
    ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

    目前为止7个文件了,ca开头的5个文件

      5)创建kubernetes证书

      hosts字段填写上所有你要用到的节点ip,创建 kubernetes 证书签名请求文件 kubernetes-csr.json:

    {
        "CN": "kubernetes",
        "hosts": [
          "127.0.0.1",
          "10.10.90.105",
          "10.10.90.106",
          "10.10.90.107",
        "kubernetes", "kubernetes.default", "kubernetes.default.svc", "kubernetes.default.svc.cluster", "kubernetes.default.svc.cluster.local" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ] }

      6)生成kubernetes证书和私钥

    $ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
    $ ls kubernetes*
    kubernetes.csr  kubernetes-csr.json  kubernetes-key.pem  kubernetes.pem

    截止到目前11个文件了,kuber开头的4个

    以上2步可以合并成一个步骤,少生成1个kubernetes-csr.json文件,直接在命令行中输入参数代理了文件输入。

    echo '{"CN":"kubernetes","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes -hostname="127.0.0.1,10.10.90.105,10.10.90.106,10.10.90.106,10.254.0.1,kubernetes,kubernetes.default" - | cfssljson -bare kubernetes

      7)创建admin证书

      vim  admin-csr.json

    {
      "CN": "admin",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "system:masters",
          "OU": "System"
        }
      ]
    }

      8)生成admin证书和私钥

    $ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
    $ ls admin*
    admin.csr  admin-csr.json  admin-key.pem  admin.pem

    截止目前15个文件,admin开头的4个

      9)创建kuber-proxy证书

      vim kube-proxy-csr.json

    {
      "CN": "system:kube-proxy",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }

      10)生成相关证书和私钥

    $ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes  kube-proxy-csr.json | cfssljson -bare kube-proxy
    $ ls kube-proxy*
    kube-proxy.csr  kube-proxy-csr.json  kube-proxy-key.pem  kube-proxy.pem

    截止到目前19个文件,kube-proxy开头的4个

      11)校验证书,举例校验kubernetes.pem证书,2个方法都可以,看输出内容可json定义是否一致。

    openssl x509  -noout -text -in  kubernetes.pem
     cfssl-certinfo -cert kubernetes.pem

      12)分发证书

      将生成的证书cp到指定目录备用,除了master,2个node节点也需要拷贝到这个这些文件,为了方便copy文件,建议2个node节点针对master做免密码登录

    mkdir -p /etc/kubernetes/ssl
    cp *.pem /etc/kubernetes/ssl

     从上面的顺序可以看出pem文件的创建都是以一个json文件为输入进行创建的,json文件最后对我们并不重要,只需要把pem文件分别scp拷贝的所有node的/etc/kubernetes/ssl文件夹即可。

  • 相关阅读:
    Piggy-Bank (hdoj1114)
    Word Amalgamation(hdoj1113)
    Lowest Bit(hdoj1196)
    1206: B.求和
    1207: C.LU的困惑
    STL初步
    关于521(nyoj)
    first blood暴力搜索,剪枝是关键
    变态最大值(nyoj)
    烧饼(nyoj779)
  • 原文地址:https://www.cnblogs.com/netsa/p/8126155.html
Copyright © 2020-2023  润新知