虚拟机搭建K8S集群

实验环境规划
三个节点:2G内存;2核cpu

一.集群规划:

Master:
主机名:k8s-master1
IP:192.168.109.137
worker-node1:
主机名:k8s-node1
IP:192.168.109.138
worker-node2:
主机名:k8s-node2
IP:192.168.109.139
k8s版本:1.16
安装方式:离线-二进制
操作系统版本:centos7.7
简介

二.初始化服务器

1.关闭防火墙

systemctl stop firewalld && systemctl disable firewalld
简介

2.关闭selinux

setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
简介

3.配置主机名

hostnamectl set-hostname 主机名
简介

4.配置名称解析

vim /etc/hosts
简介

5.配置时间同步

    选择一个节点作为服务端,其他未客户端
    master1为服务端
        1.配置 k8s-master1
        yum install chrony -y
        vim /etc/chrony.conf
        修改上游服务器:这里可以以自己为上游:如:server 127.127.1.0 iburst
        修改允许哪个网络来访问:如:allow 192.168.109.0/24
        修改度量值:local stratum 10
        
        启动:systemctl start chronyd && systemctl enable chronyd && 查看端口(udp):ss -unl | grep 123
        
        2.配置客户端 k8s-node1 和 k8s-node2
        yum install chrony -y
        vim /etc/chrony.conf
        只需修改上游服务器:如:server 192.168.109.137 iburst
        
        启动:systemctl restart chronyd && systemctl enable chronyd
        查看同步信息:chronyc sources
简介

服务端:

客户端: 

6.关闭交换分区

swapoff -a && vim /etc/fstab 注释:/dev/mapper/centos-swap swap && 检查查看 free -m
简介

三.部署 Etcd

1.安装证书生成工具cfssl(这里我选择在master上进行证书的生成)

1.安装证书生成工具cfssl(这里我选择在master上进行证书的生成)

cd ~ && mkdir TLS && cd ~/TLS
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
简介

2.自建CA(证书颁发机构)

生成模版json

cd /root/TLS && mkdir etcd && cd etcd

生成证书模版,并修改模板

cfssl print-defaults config > ca-config.json

vim ca-config.json

{
  "signing": {
    "default": {
      "expiry": "876000h"
    },
    "profiles": {
      "etcd": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "876000h"
      }
    }
  }
}
代码
"字段说明"
"ca-config.json":可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
"signing":表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE"server auth":表示client可以用该 CA 对server提供的证书进行验证;
"client auth":表示server可以用该CA对client提供的证书进行验证;
字段说明
生成ca模版以及修改模版

cfssl print-defaults csr > ca-csr.json 或直接编写ca-csr.json

vim ca-csr.json

{
  "CN": "etcd",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ZheJiang",
      "L": "HangZhou",
      "O": "etcd",
      "OU": "System"
    }
  ]
}
代码
"CN":Common Name,etcd 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
"O":Organization,etcd 从证书中提取该字段作为请求用户所属的组 (Group);
这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。
"在etcd这两个参数没太大的重要意义,跟着配置就好。"
字段说明

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

 3.用自建的CA给etcd主机颁发证书

vim etcd-csr.json

{
  "CN": "etcd",
  "hosts": [
    "192.168.109.137",
    "192.168.109.138",
    "192.168.109.139"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ZheJiang",
      "L": "HangZhou",
      "O": "etcd",
      "OU": "System"
    }
  ]
}
代码

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd etcd-csr.json | cfssljson -bare etcd

2.安装etcd

二进制包下载地址
https://github.com/etcd-io/etcd/releases

curl -L https://storage.googleapis.com/etcd/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz -o /root/k8s/etcd/etcd-v3.4.7-linux-amd64.tar.gz

猜你喜欢

转载自www.cnblogs.com/NGames/p/12690545.html
今日推荐