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文件夾即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM