Kubernetes入门篇(一)之架构解析和证书创建和分发

1、Kubernetes架构和集群规划

(1)Kubernetes架构

(2)K8S架构图

K8S Master节点
API Server:K8S对外的唯一接口,所有的请求都需要经过这个接口进行通信。主要处理REST操作以及更新ETCD中的对象。是所有资源增删改查的唯一入口。 
Scheduler:资源调度,负责Pod到Node的调度 
Controller Manager:所有其他集群级别的功能,目前由控制器Manager执行。资源对象的自动化控制中心 
ETCD:所有持久化的状态信息存储在ETCD中。
K8S Node节点
Kubelet:管理Pods以及容器、镜像、Volume等,实现对集群、对节点的管理。 
Kube-proxy:提供网络代理以及负载均衡,实现Service通信。有2种方式:LVS或者Iptables 
Docker Engine:负责节点的容器的管理工作

(3)实验环境准备:

主机名                   IP地址            描述
linux-node1.example.com    eth0:192.168.56.110    K8S Master节点/ETCD节点
linux-node2.example.com    eth0:192.168.56.120    K8S Node节点/ETCD节点
linux-node3.example.com    eth0:192.168.56.130    K8S Node节点/ETCD节点

(4)系统环境初始化

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.准备软件包

百度网盘下载地址: 
https://pan.baidu.com/s/1zs8sCouDeCQJ9lghH1BPiw

4.解压软件包
[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
[root@linux
-node1 src]# cd kubernetes #解压的server、client、node都会解压到kubernetes目录下 [root@linux-node1 kubernetes]# ll total 29536 drwxr-xr-x 2 root root 6 Apr 12 23:16 addons drwxr-xr-x 3 root root 31 Apr 12 23:16 client drwxr-xr-x 13 root root 4096 Apr 12 23:24 cluster drwxr-xr-x 7 root root 131 Apr 12 23:25 docs drwxr-xr-x 34 root root 4096 Apr 12 23:25 examples drwxr-xr-x 3 root root 17 Apr 12 23:24 hack -rw-r--r-- 1 root root 24710771 Apr 12 23:16 kubernetes-src.tar.gz -rw-r--r-- 1 root root 5516760 Apr 12 23:16 LICENSES drwxr-xr-x 3 root root 17 Apr 12 23:16 node -rw-r--r-- 1 root root 3329 Apr 12 23:25 README.md drwxr-xr-x 3 root root 66 Apr 12 23:16 server drwxr-xr-x 3 root root 22 Apr 12 23:24 third_party -rw-r--r-- 1 root root 8 Apr 12 23:25 version

各个节点增加kubernetes的环境变量

[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

 

2、CA证书创建和分发

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

(1)安装 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.56.120:/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.56.130:/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   

(2)创建用来生成 CA 文件的 JSON 配置文件

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

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

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

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

[root@linux-node1 ssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
2018/05/30 14:11:02 [INFO] generating a new CA key and certificate from CSR
2018/05/30 14:11:02 [INFO] generate received request
2018/05/30 14:11:02 [INFO] received CSR
2018/05/30 14:11:02 [INFO] generating key: rsa-2048
2018/05/30 14:11:02 [INFO] encoded CSR
2018/05/30 14:11:02 [INFO] signed certificate with serial number 167714418220584190953978332616641264281080483250
[root@linux-node1 ssl]# ll
total 20
-rw-r--r-- 1 root root  290 May 30 14:09 ca-config.json
-rw-r--r-- 1 root root 1001 May 30 14:11 ca.csr
-rw-r--r-- 1 root root  208 May 30 14:10 ca-csr.json
-rw------- 1 root root 1675 May 30 14:11 ca-key.pem
-rw-r--r-- 1 root root 1359 May 30 14:11 ca.pem

(5)分发证书

[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.56.120:/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.56.130:/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    

猜你喜欢

转载自www.cnblogs.com/linuxk/p/9272567.html