中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

發布時間:2020-07-29 12:42:06 來源:網絡 閱讀:214 作者:IT人故事 欄目:云計算

原創文章,歡迎轉載。轉載請注明:轉載自IT人故事會,謝謝!
原文鏈接地址:『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

接上次的繼續認證版的k8s搭建。

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

kubectl

準備證書
#kubectl證書放在這,由于kubectl相當于系統管理員,老鐵使用admin命名
mkdir -p /etc/kubernetes/ca/admin
#準備admin證書配置 - kubectl只需客戶端證書,因此證書請求中 hosts 字段可以為空
cp ~/kubernetes-starter/target/ca/admin/admin-csr.json /etc/kubernetes/ca/admin/
cd /etc/kubernetes/ca/admin/
#使用根證書(ca.pem)簽發admin證書
cfssl gencert \
        -ca=/etc/kubernetes/ca/ca.pem \
        -ca-key=/etc/kubernetes/ca/ca-key.pem \
        -config=/etc/kubernetes/ca/ca-config.json \
        -profile=kubernetes admin-csr.json | cfssljson -bare admin
#老鐵最終要的是admin-key.pem和admin.pem
ls
admin.csr  admin-csr.json  admin-key.pem  admin.pem
8.2 配置kubectl
#指定apiserver的地址和證書位置(ip自行修改)
kubectl config set-cluster kubernetes \
        --certificate-authority=/etc/kubernetes/ca/ca.pem \
        --embed-certs=true \
        --server=https://192.168.68.101:6443
#設置客戶端認證參數,指定admin證書和秘鑰
kubectl config set-credentials admin \
        --client-certificate=/etc/kubernetes/ca/admin/admin.pem \
        --embed-certs=true \
        --client-key=/etc/kubernetes/ca/admin/admin-key.pem
#關聯用戶和集群
kubectl config set-context kubernetes \
        --cluster=kubernetes --user=admin
#設置當前上下文
kubectl config use-context kubernetes

#設置結果就是一個配置文件,可以看看內容
cat ~/.kube/config

驗證master節點

#可以使用剛配置好的kubectl查看一下組件狀態
kubectl get componentstatus

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

calico-node(主節點生成證書,102,103通過scp拷貝過去)

準備證書

后續可以看到calico證書用在四個地方:

  • calico/node 這個docker 容器運行時訪問 etcd 使用證書
  • cni 配置文件中,cni 插件需要訪問 etcd 使用證書
  • calicoctl 操作集群網絡時訪問 etcd 使用證書
  • calico/kube-controllers 同步集群網絡策略時訪問 etcd 使用證書
    #calico證書放在這
    mkdir -p /etc/kubernetes/ca/calico
    #準備calico證書配置 - calico只需客戶端證書,因此證書請求中 hosts 字段可以為空
    cp ~/kubernetes-starter/target/ca/calico/calico-csr.json /etc/kubernetes/ca/calico/
    cd /etc/kubernetes/ca/calico/
    #使用根證書(ca.pem)簽發calico證書
    cfssl gencert \
        -ca=/etc/kubernetes/ca/ca.pem \
        -ca-key=/etc/kubernetes/ca/ca-key.pem \
        -config=/etc/kubernetes/ca/ca-config.json \
        -profile=kubernetes calico-csr.json | cfssljson -bare calico
    #老鐵最終要的是calico-key.pem和calico.pem
    ls

    『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

拷貝主節點證書calico

由于calico服務是所有節點都需要啟動的,需要把這幾個文件拷貝到每臺服務器
** 通過主節點拷貝到102,103兩臺機器上

#root的密碼都是vagrant
scp -r /etc/kubernetes/ca/ root@192.168.68.102:/etc/kubernetes/ca/
scp -r /etc/kubernetes/ca/ root@192.168.68.103:/etc/kubernetes/ca/

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

確定下主節點的/etc/kubernetes/ca/ 和 102,103內的目錄一致。

更新calico服務

cp ~/kubernetes-starter/target/all-node/kube-calico.service /lib/systemd/system/
systemctl daemon-reload
service kube-calico start

#驗證calico(能看到其他節點的列表就對啦)
calicoctl node status

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

kubelet

老鐵這里讓kubelet使用引導token的方式認證,所以認證方式跟之前的組件不同,它的證書不是手動生成,而是由工作節點TLS BootStrap 向api-server請求,由主節點的controller-manager 自動簽發。

創建角色綁定(主節點)

引導token的方式要求客戶端向api-server發起請求時告訴他你的用戶名和token,并且這個用戶是具有一個特定的角色:system:node-bootstrapper,所以需要先將 bootstrap token 文件中的 kubelet-bootstrap 用戶賦予這個特定角色,然后 kubelet 才有權限發起創建認證請求。
在主節點執行下面命令

#可以通過下面命令查詢clusterrole列表
kubectl -n kube-system get clusterrole

#可以回顧一下token文件的內容
cat /etc/kubernetes/ca/kubernetes/token.csv

#創建角色綁定(將用戶kubelet-bootstrap與角色system:node-bootstrapper綁定)
kubectl create clusterrolebinding kubelet-bootstrap \
         --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

創建bootstrap.kubeconfig(102,103工作節點)

這個配置是用來完成bootstrap token認證的,保存了像用戶,token等重要的認證信息,這個文件可以借助kubectl命令生成:(也可以自己寫配置)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)
很重要。
0b1bd95b94caa5534d1d4a7318d51b0e
上邊有說明這個咋來的

#設置集群參數(注意替換ip)
kubectl config set-cluster kubernetes \
        --certificate-authority=/etc/kubernetes/ca/ca.pem \
        --embed-certs=true \
        --server=https://192.168.68.101:6443 \
        --kubeconfig=bootstrap.kubeconfig
#設置客戶端認證參數(注意替換token)
kubectl config set-credentials kubelet-bootstrap \
        --token=0b1bd95b94caa5534d1d4a7318d51b0e\
        --kubeconfig=bootstrap.kubeconfig
#設置上下文
kubectl config set-context default \
        --cluster=kubernetes \
        --user=kubelet-bootstrap \
        --kubeconfig=bootstrap.kubeconfig
#選擇上下文
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
mkdir -p /var/lib/kubelet
mkdir -p /etc/kubernetes
mkdir -p /etc/cni/net.d
#將剛生成的文件移動到合適的位置
mv bootstrap.kubeconfig /etc/kubernetes/
準備cni配置(102,103工作節點)

copy配置


cp ~/kubernetes-starter/target/worker-node/10-calico.conf /etc/cni/net.d/
kubelet服務

更新服務

cp ~/kubernetes-starter/target/worker-node/kubelet.service /lib/systemd/system/
systemctl daemon-reload
service kubelet start

** 登錄101主節點輸入命令查看狀態

kubectl get csr
#啟動kubelet之后到master節點允許worker加入(批準worker的tls證書請求)
#--------*在主節點執行*---------
kubectl get csr|grep 'Pending' | awk '{print $1}'| xargs kubectl certificate approve
#-----------------------------

#檢查日志
journalctl -f -u kubelet

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

加入到主節點中。102

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

103請求加入,102已經加入

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

kube-proxy(子節點102,103)

準備證書
#proxy證書放在這
mkdir -p /etc/kubernetes/ca/kube-proxy

#準備proxy證書配置 - proxy只需客戶端證書,因此證書請求中 hosts 字段可以為空。
#CN 指定該證書的 User 為 system:kube-proxy,預定義的 ClusterRoleBinding system:node-proxy 將User system:kube-proxy 與 Role system:node-proxier 綁定,授予了調用 kube-api-server proxy的相關 API 的權限
cp ~/kubernetes-starter/target/ca/kube-proxy/kube-proxy-csr.json /etc/kubernetes/ca/kube-proxy/
cd /etc/kubernetes/ca/kube-proxy/

#使用根證書(ca.pem)簽發calico證書
cfssl gencert \
        -ca=/etc/kubernetes/ca/ca.pem \
        -ca-key=/etc/kubernetes/ca/ca-key.pem \
        -config=/etc/kubernetes/ca/ca-config.json \
        -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
#老鐵最終要的是kube-proxy-key.pem和kube-proxy.pem
ls

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

生成kube-proxy.kubeconfig配置
#設置集群參數(注意替換ip)
kubectl config set-cluster kubernetes \
        --certificate-authority=/etc/kubernetes/ca/ca.pem \
        --embed-certs=true \
        --server=https://192.168.68.101:6443 \
        --kubeconfig=kube-proxy.kubeconfig
#置客戶端認證參數
kubectl config set-credentials kube-proxy \
        --client-certificate=/etc/kubernetes/ca/kube-proxy/kube-proxy.pem \
        --client-key=/etc/kubernetes/ca/kube-proxy/kube-proxy-key.pem \
        --embed-certs=true \
        --kubeconfig=kube-proxy.kubeconfig
#設置上下文參數
kubectl config set-context default \
        --cluster=kubernetes \
        --user=kube-proxy \
        --kubeconfig=kube-proxy.kubeconfig
#選擇上下文
kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
#移動到合適位置
mv kube-proxy.kubeconfig /etc/kubernetes/kube-proxy.kubeconfig
kube-proxy服務

啟動服務

 mkdir -p /var/lib/kube-proxy
cp ~/kubernetes-starter/target/worker-node/kube-proxy.service /lib/systemd/system/
systemctl daemon-reload

#安裝依賴軟件
yum -y install conntrack

#啟動服務
service kube-proxy start
#查看日志
journalctl -f -u kube-proxy

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

12. kube-dns

kube-dns有些特別,因為它本身是運行在kubernetes集群中,以kubernetes應用的形式運行。所以它的認證授權方式跟之前的組件都不一樣。它需要用到service account認證和RBAC授權。
service account認證:
每個service account都會自動生成自己的secret,用于包含一個ca,token和secret,用于跟api-server認證
RBAC授權:
權限、角色和角色綁定都是kubernetes自動創建好的。老鐵只需要創建一個叫做kube-dns的 ServiceAccount即可,官方現有的配置已經把它包含進去了。

準備配置文件

在官方的基礎上添加的變量,生成適合老鐵我們集群的配置。直接copy就可以啦

cd ~/kubernetes-starter

新的配置沒有設定api-server。不訪問api-server,它是怎么知道每個服務的cluster ip和pod的endpoints的呢?這就是因為kubernetes在啟動每個服務service的時候會以環境變量的方式把所有服務的ip,端口等信息注入進來。

創建kube-dns(主節點101)
kubectl create -f ~/kubernetes-starter/target/services/kube-dns.yaml
#看看啟動是否成功
kubectl -n kube-system get pods

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

PS:終于,安全版的kubernetes集群部署完成了。 涉及到的細節也非常多,就這都對了兩篇博文了,如果每個配置都詳細解釋估計得寫本書了。從入門的角度了解認證和授權。
下面老鐵們使用新集群先溫習一下之前學習過的命令,然后再認識一些新的命令,新的參數,新的功能。

『高級篇』docker之kubernetes搭建集群添加認證授權(下)(39)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台南市| 固始县| 沁阳市| 潮安县| 达州市| 巢湖市| 乌恰县| 莱阳市| 安塞县| 溧水县| 巴塘县| 虎林市| 吴川市| 通海县| 新巴尔虎右旗| 高碑店市| 闽侯县| 双峰县| 来凤县| 勐海县| 嘉黎县| 谢通门县| 游戏| 车致| 鲜城| 沙湾县| 社会| 玛曲县| 长顺县| 巧家县| 桂东县| 禹城市| 交口县| 兰坪| 子洲县| 临朐县| 荆州市| 本溪| 浠水县| 临沧市| 绥滨县|