• [云原生k8s] k8s的CA证书创建和使用


    目录

    引言:

    一、部署步骤

    二、实验环境

    2.1、所有节点,关闭防火墙、selinux、swap交换分区

    2.2、修改主机名,并写入三台服务器得hosts中

    2.3、调整内核参数

    三、Etcd集群部署

    3.1、准备cfssl证书生成工具

    3.2、生成Etcd证书

    自签证书颁发机构(CA)

    生成证书:

    使用自谦CA签发Etcd HTTPS证书

    创建证书申请文件

    3.3、从github仓库下载etcd二进制文件

    3.4、部署Etcd集群

    创建工作目录并解压二进制包

    创建etcd配置文件

    systemd管理etcd

    拷贝给个生成的证书

    将上面master节点所有生成的文件拷贝到节点 1 和节点 2上

    成功拷贝过来了

    启动并设置开机自启


    引言:

            目前生产部署Kubernetes集群主要有两种方式:

    (1)kubeadm
    Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部 署 Kubernetes 集群。
    官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
    (2)二进制
    从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。
    Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可 控,推荐使用二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很 多工作原理,也利于后期维护。

    一、部署步骤

    在所有节点上安装Dcoker和kubeadm

    部署Kubernetes Master

    部署Kubernetes Node,将节点加入Kubernetes集群中

    部署Dashboard Web页面,可视化查看Kubernetes资源

    二、实验环境

    服务器类型IP地址
    master192.168.100.6
    node01192.168.100.8
    node02192.168.100.10

    2.1、所有节点,关闭防火墙、selinux、swap交换分区

    #所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    swapoff -a        #交换分区必须要关闭
    sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

    2.2、修改主机名,并写入三台服务器得hosts中

    2.3、调整内核参数

    将桥接得IPV4流量传递到iptables链(三台都执行)

    #调整内核参数
     
    cat > /etc/sysctl.d/kubernetes.conf << EOF
    #开启网桥模式,可将网桥的流量传递给iptables链
    net.bridge.bridge-nf-call-ip6tables=1
    net.bridge.bridge-nf-call-iptables=1
    #关闭ipv6协议
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv4.ip_forward=1
    EOF
     
    #加载参数
    sysctl --system  (立即生效)

    三、Etcd集群部署

    Etcd 是一个分布式键值存储系统,Kubernetes 使用 Etcd 进行数据存储,所以先准备 一个 Etcd 数据库,为解决 Etcd 单点故障,应采用集群方式部署,这里使用 3 台组建集 群,可容忍 1 台机器故障,当然,你也可以使用 5 台组建集群,可容忍 2 台机器故障。

    每台都需要安装etcd

    3.1、准备cfssl证书生成工具

    cfssl 是一个开源的证书管理工具,使用 json 文件生成证书,相比 openssl 更方便使用。
    找任意一台服务器操作,这里用 Master 节点

    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
    chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
    mv cfssl_linux-amd64 /usr/local/bin/cfssl
    mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
    mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

    3.2、生成Etcd证书

    自签证书颁发机构(CA)

    #创建工作目录
    mkdir -p ~/TLS/{etcd,k8s}
    cd TLS/etcd

    生成证书:

    cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

     ls *pem

    使用自谦CA签发Etcd HTTPS证书

    创建证书申请文件

    cat > server-csr.json<< EOF
    {
    "CN": "etcd",
    "hosts": [
    "192.168.100.6",
    "192.168.100.8",
    "192.168.100.10"
    ],
    "key": {
    "algo": "rsa",
    "size": 2048
    },
    "names": [
    {
    "C": "CN",
    "L": "BeiJing",
    "ST": "BeiJing"
    }
    ]
    }
    EOF

    注:上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP,一个都不能少!为了 方便后期扩容可以多写几个预留的 IP。

    3.3、从github仓库下载etcd二进制文件

    wget https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9linux-amd64.tar.gz

    3.4、部署Etcd集群

    以下在节点master上操作,为简化操作,待会将节点1生成的所有文件拷贝到node1和2上

    创建工作目录并解压二进制包

    mkdir -p /opt/etcd/{bin,cfg,ssl} 
    tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
    mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/

    创建etcd配置文件

    cat > /opt/etcd/cfg/etcd.conf << EOF
    #[Member]
    ETCD_NAME="etcd-1"
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://192.168.100.6:2380"
    ETCD_LISTEN_CLIENT_URLS="https://192.168.100.6:2379"
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.6:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.6:2379"
    ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.100.6:2380,etcd-2=https://192.168.100.8:2380,etcd-3=https://192.168.100.10:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    EOF

     ETCD_NAME:节点名称,集群中唯一
    ETCD_DATA_DIR:数据目录
    ETCD_LISTEN_PEER_URLS:集群通信监听地址
    ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址
    ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址
    ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址
    ETCD_INITIAL_CLUSTER:集群节点地址
    ETCD_INITIAL_CLUSTER_TOKEN:集群 Token
    ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new 是新集群,existing 表示加入 已有集群

    systemd管理etcd

    cat > /usr/lib/systemd/system/etcd.service << EOF
    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    [Service]
    Type=notify
    EnvironmentFile=/opt/etcd/cfg/etcd.conf
    ExecStart=/opt/etcd/bin/etcd \
    --cert-file=/opt/etcd/ssl/server.pem \
    --key-file=/opt/etcd/ssl/server-key.pem \
    --peer-cert-file=/opt/etcd/ssl/server.pem \
    --peer-key-file=/opt/etcd/ssl/server-key.pem \
    --trusted-ca-file=/opt/etcd/ssl/ca.pem \
    --peer-trusted-ca-file=/opt/etcd/ssl/ca.pem \
    --logger=zap
    Restart=on-failure
    LimitNOFILE=65536
    [Install]
    WantedBy=multi-user.target
    EOF

    拷贝给个生成的证书

    把刚才生成的证书拷贝到配置文件中的路径:

    cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/

    将上面master节点所有生成的文件拷贝到节点 1 和节点 2上

    scp -r /opt/etcd/ root@192.168.100.8:/opt/
    scp /usr/lib/systemd/system/etcd.service root@192.168.100.8:/usr/lib/systemd/system/
    scp -r /opt/etcd/ root@192.168.100.10:/opt/
    scp /usr/lib/systemd/system/etcd.service root@192.168.100.10:/usr/lib/systemd/system/

    成功拷贝过来了

    启动并设置开机自启

    注意这里需要先启动从节点的etcd,再启动主

    systemctl daemon-reload
    systemctl start etcd
    systemctl enable etcd

    测试一下集群是否健康

    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.100.6:2379,https://192.168.100.8:2379,https://192.168.100.10:2379" endpoint health 

    总体来说CA证书的创建就是这样

  • 相关阅读:
    【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷F
    MEMS 惯性传感器 - 参数指标&误差介绍
    智能网关在校园能耗监测系统中的应用介绍
    程序员为讨好老婆,用go写了如下程序,细思极恐
    如何完美卸载Visual Studio 2013
    购物网站系统
    合肥工业大学计算机网络实验二
    MAC和安卓手机文件传输OpenMTP
    《对比Excel,轻松学习Python数据分析》读书笔记------数据运算
    视频编解码从H.264到H.266:浅析GB28181安防视频汇聚EasyCVR视频压缩技术
  • 原文地址:https://blog.csdn.net/weixin_71429850/article/details/127670947