1.实验环境

  主机环境:

  1. VMWare WorkStation 14 PRO
  2. CentOS-7-x86_64-Everything-1810
主机名IP地址描述
Linux-node1192.168.219.135K8S Master节点 ETCD节点
Linux-node1192.168.219.136K8S Node节点 ETCD节点
Linux-node1192.168.219.137K8S Node节点 ETCD节点

在这里插入图片描述

2.环境初始化

	(此处省略VMWare安装CentOS7步骤,请自行百度。)

  a. 安装Docker

第一步:修改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

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

[root@linux-node3 ~]# cd /etc/yum.repos.d/
[root@linux-node3 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-node2 ~]# yum install -y docker-ce
[root@linux-node3 ~]# yum install -y docker-ce
第三步:启动Docker
[root@linux-node1 ~]# systemctl start docker
[root@linux-node2 ~]# systemctl start docker
[root@linux-node3 ~]# systemctl start docker

  b. 准备K8S部署目录

[root@linux-node1 ~]# mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}
[root@linux-node2 ~]# mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}
[root@linux-node3 ~]# mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}

  c.准备软件K8S包

  百度网盘 提取码:c1zg
  下载并解压,将其中的kubernetes.tar.gz 、kubernetes-server-linux-amd64.tar.gz 、kubernetes-client-linux-amd64.tar.gz、kubernetes-node-linux-amd64.tar.gz
上传至三台主机的/usr/local/src目录下。

  d.解压软件包

  分别在三台主机中解压

[root@linux-node1 src]# tar zxf kubernetes.tar.gz 
[root@linux-node1 src]# tar zxf kubernetes-server-linux-amd64.tar.gz 
[root@linux-node1 src]# tar zxf kubernetes-client-linux-amd64.tar.gz
[root@linux-node1 src]# tar zxf kubernetes-node-linux-amd64.tar.gz

#解压的server、client、node都会解压到kubernetes目录下
[root@linux-node1 src]# cd kubernetes   
[root@linux-node1 kubernetes]# ll
总用量 29536
drwxr-xr-x.  2 root root        6 412 2018 addons
drwxr-xr-x.  3 root root       31 412 2018 client
drwxr-xr-x. 13 root root     4096 412 2018 cluster
drwxr-xr-x.  7 root root      131 412 2018 docs
drwxr-xr-x. 34 root root     4096 412 2018 examples
drwxr-xr-x.  3 root root       17 412 2018 hack
-rw-r--r--.  1 root root 24710771 412 2018 kubernetes-src.tar.gz
-rw-r--r--.  1 root root  5516760 412 2018 LICENSES
drwxr-xr-x.  3 root root       17 412 2018 node
-rw-r--r--.  1 root root     3329 412 2018 README.md
drwxr-xr-x.  3 root root       66 412 2018 server
drwxr-xr-x.  3 root root       22 412 2018 third_party
-rw-r--r--.  1 root root        8 412 2018 version

  e.增加环境变量

  分别在三台主机中增加环境变量

[root@linux-node1 ~]# vim .bash_profile
PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
[root@linux-node1 ~]# source .bash_profile 

[root@linux-node2 ~]# vim .bash_profile
PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
[root@linux-node2 ~]# source .bash_profile 

[root@linux-node3 ~]# vim .bash_profile
PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
[root@linux-node3 ~]# source .bash_profile 

3.CA证书创建和分发

  从k8s的1.8版本开始,K8S系统各组件需要使用TLS证书对通信进行加密。每一个K8S集群都需要独立的CA证书体系。CA证书有以下三种:easyrsa、openssl、cfssl。这里使用cfssl证书,也是目前使用最多的,相对来说配置简单一些,通过json的格式,把证书相关的东西配置进去即可。这里使用cfssl的版本为1.2版本。

  a.安装CFSSL

[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
[root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
[root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
[root@linux-node1 src]# chmod +x cfssl*  #增加执行权限
[root@linux-node1 src]# mv cfssl-certinfo_linux-amd64 /opt/kubernetes/bin/cfssl-certinfo
[root@linux-node1 src]# mv cfssljson_linux-amd64  /opt/kubernetes/bin/cfssljson
[root@linux-node1 src]# mv cfssl_linux-amd64  /opt/kubernetes/bin/cfssl

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

[root@linux-node1 ~]# ssh-copy-id linux-node1
[root@linux-node1 ~]# ssh-copy-id linux-node2
[root@linux-node1 ~]# ssh-copy-id linux-node3
[root@linux-node1 ~]# scp /opt/kubernetes/bin/cfssl* 192.168.219.136:/opt/kubernetes/bin
cfssl                                              100%   10MB  18.1MB/s   00:00    
cfssl-certinfo                                     100% 6441KB  21.3MB/s   00:00    
cfssljson                                          100% 2224KB  13.3MB/s   00:00    
[root@linux-node1 ~]# scp /opt/kubernetes/bin/cfssl* 192.168.219.137:/opt/kubernetes/bin
cfssl                                              100%   10MB  22.5MB/s   00:00    
cfssl-certinfo                                     100% 6441KB  40.7MB/s   00:00    
cfssljson                                          100% 2224KB  43.1MB/s   00:00   

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

[root@linux-node1 src]# mkdir ssl && cd ssl    #创建临时证书存放目录
[root@linux-node1 ssl]# pwd
/usr/local/src/ssl

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

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

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

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

#生成证书和密钥
[root@linux-node1 ssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca  
[root@linux-node1 ssl]# ll
[root@linux-node1 ssl]# ll
总用量 28
-rw-r--r--. 1 root root  290 57 16:55 ca-config.json
-rw-r--r--. 1 root root 1005 57 16:55 ca.csr
-rw-------. 1 root root 1675 57 16:55 ca-key.pem
-rw-r--r--. 1 root root 1363 57 16:55 ca.pem
-rw-r--r--. 1 root root  301 57 17:35 etcd-csr.json
-rw-------. 1 root root 1675 58 09:45 etcd-key.pem
-rw-r--r--. 1 root root 1440 58 09:45 etcd.pem

  e.分发证书

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

#SCP证书到k8s-node1和k8s-node2节点,以后增加节点也是需要将这些证书进行分发
[root@linux-node1 ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 192.168.219.136:/opt/kubernetes/ssl 
ca.csr                                                   100% 1001   350.2KB/s   00:00    
ca.pem                                                   100% 1359   891.4KB/s   00:00    
ca-key.pem                                               100% 1675     1.0MB/s   00:00    
ca-config.json                                           100%  290   180.7KB/s   00:00    
[root@linux-node1 ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 192.168.219.137:/opt/kubernetes/ssl 
ca.csr                                                   100% 1001   350.2KB/s   00:00    
ca.pem                                                   100% 1359   891.4KB/s   00:00    
ca-key.pem                                               100% 1675     1.0MB/s   00:00    
ca-config.json                                           100%  290   180.7KB/s   00:00    

参考:《每天5分钟玩转Kubernetes》、https://www.cnblogs.com/linuxk/

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐