k8s安裝之配置

配置


Configuration file details
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
Kubeconfig

###安裝kubectl工具
wget https://dl.k8s.io/v1.11.0/kubernetes-client-linux-amd64.tar.gz
tar -zxf kubernetes-client-linux-amd64.tar.gz
cp kubernetes/client/bin/kubectl /usr/local/bin/
chmod +x /usr/local/bin/kubectl
###創建kubeconfig在master節點執行
export KUBE_APISERVER="https://172.16.20.206:6443"
####設置集羣參數
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER}
####設置客戶端認證參數
kubectl config set-credentials admin \
  --client-certificate=/etc/kubernetes/ssl/admin.pem \
  --embed-certs=true \
  --client-key=/etc/kubernetes/ssl/admin-key.pem
####設置上下文參數
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=admin
####設置默認上下文
kubectl config use-context kubernetes
####說明
kubectl是kubernetes的集羣管理工具,任何節點通過kubetcl都可以管理整個k8s集羣。
在master節點部署,部署成功後會生成 /root/.kube/config 文件,kubectl就是通過這個獲取 kube-apiserver 地址、證書、用戶名等信息,所以這個文件需要保管好

###創建bootstrap.kubeconfig文件
####創建 TLS Bootstrapping Token
export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
cat > token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
cp token.csv /etc/kubernetes/
####生成bootstrap.kubeconfig文件
cd /etc/kubernetes
export KUBE_APISERVER="https://172.16.20.206:6443"
#####設置集羣參數
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=bootstrap.kubeconfig
#####設置客戶端認證參數
kubectl config set-credentials kubelet-bootstrap \
  --token=${BOOTSTRAP_TOKEN} \
  --kubeconfig=bootstrap.kubeconfig
#####設置上下文參數
kubectl config set-context default \
  --cluster=kubernetes \
  --user=kubelet-bootstrap \
  --kubeconfig=bootstrap.kubeconfig
#####設置默認上下文
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
####說明
kubelet訪問kube-apiserver的時候是通過bootstrap.kubeconfig進行用戶驗證;
--embed-certs 爲 true 時表示將 certificate-authority 證書寫入到生成的 bootstrap.kubeconfig 文件中;
設置客戶端認證參數時沒有指定祕鑰和證書,後續由 kube-apiserver 自動生成。

###創建kube-proxy.kubeconfig文件
cd /etc/kubernetes
export KUBE_APISERVER="https://172.16.20.206:6443"
#####設置集羣參數
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=kube-proxy.kubeconfig
#####設置客戶端認證參數
kubectl config set-credentials kube-proxy \
  --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem \
  --client-key=/etc/kubernetes/ssl/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
####說明
設置集羣參數和客戶端認證參數時 --embed-certs 都爲 true,這會將 certificate-authority、client-certificate 和 client-key 指向的證書文件內容寫入到生成的 kube-proxy.kubeconfig 文件中;
kube-proxy.pem 證書中 CN 爲 system:kube-proxy,kube-apiserver 預定義的 RoleBinding cluster-admin 將User system:kube-proxy 與 Role system:node-proxier 綁定,該 Role 授予了調用 kube-apiserver Proxy 相關 API 的權限。
####參考鏈接
https://blog.51cto.com/devingeng/2159857?source=dra
https://jimmysong.io/posts/kubernetes-create-kubeconfig/
###分發配置文件
將/etc/kubernetes/{kube-proxy.kubeconfig,bootstrap.kubeconfig}分發到node節點
##master節點安裝

###/etc/kubernetes/config文件
cat > /etc/kubernetes/config << EOF
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=2"
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=172.16.20.206:8080"
EOF
####說明
該配置文件同時被kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章