Kubernetes的安裝和配置


一.集群服務器配置信息展示
 角色  IP地址  組件  規格
k8s-master1 192.168.0.201

kube-apiserver
kube-controller-manager
kube-scheduler
etcd

 1C   2G
 k8s-master2  192.168.0.202

kube-apiserver
kube-controller-manager
kube-scheduler

 1C   2G
 k8s-node1  192.168.0.203

kube-proxy
docker
etcd

 1C   2G
 k8s-node2  192.168.0.204

kube-proxy
docker
etcd

 1C   2G
 Load Balancer(負載均衡)

 192.168.0.205

VIP:192.168.0.200

 Nginx  1C   2G
  Load Balancer(負載均衡)  192.168.0.206  Nginx  1C   2G




























二.搭建一主二從的單集群模式(使用k8s-master1,k8s-node1,k8s-node2三台機器)
(1)系統初始化(可三台機器同時操作)

關閉防火牆:
   systemctl stop firewalld
   systemctl disable firewalld

關閉selinux:
   setenforce 0
   sed -i 's/enforcing/disabled/' /etc/selinux/config

關閉swap:
   swapoff -a
   sed -ri 's/.*swap.*/#&/' /etc/fstab

同步服務器時間為win系統時間:
   yum install ntpdate -y
   ntpdate time.windows.com
添加hosts,所有機器都添加本身和其它的:
   vi /etc/hosts
   192.168.0.201 k8s-master1
   192.168.0.203 k8s-node1
   192.168.0.204 k8s-node2

   

分別修改主機名:

   hostnamectl set-hostname k8s-master1
   hostnamectl set-hostname k8s-node1
   hostnamectl set-hostname k8s-node2

(2)集群證書安裝配置(可在任意一台操作,如在k8s-master1上操作)
上傳 TLS.tar.gz 到服務器/usr/local/k8s下
mkdir
/usr/local/k8s 解壓證書文件 cd /usr/local/k8s tar -zxvf TLS.tar.gz 執行腳本文件將證書拷貝到/usr/local/bin下 cd /usr/local/k8s/TLS ./cfssl.sh 修改相關配置文件自動生成證書 cd /usr/local/k8s/TLS/etcd vi server-csr.json 將hosts中的IP改為192.168.0.201,192.168.0.203,192.168.0.204
     
   ./generate_etcd_cert.sh       #腳本生成證書

部署三個Etcd節點,上傳 etcd.tar.gz 到服務器/usr/local/k8s下

解壓etcd壓縮文件
   cd /usr/local/k8s
   tar -zxvf etcd.tar.gz
etcd文件遷移
   mv etcd /opt/
   mv etcd.service /usr/lib/systemd/system
   vi /opt/etcd/cfg/etcd.conf
   修改etcd-2和etcd-3的IP分別改為192.168.0.203,192.168.0.204,其它IP均改為192.168.0.201

   

etcd證書文件遷移
   cd /usr/local/k8s/TLS/etcd
   cp {ca,server,server-key}.pem /opt/etcd/ssl #都寫 y
分別拷貝Etcd到另外兩個節點
   scp -r /opt/etcd root@192.168.0.203:/opt
   scp -r /opt/etcd root@192.168.0.204:/opt
   scp /usr/lib/systemd/system/etcd.service root@192.168.0.203:/usr/lib/systemd/system
   scp /usr/lib/systemd/system/etcd.service root@192.168.0.204:/usr/lib/systemd/system
分別登陸k8s-node1和k8s-node2兩台服務器修改配置文件
   vi /opt/etcd/cfg/etcd.conf
   分別將ETCD_NAME改為etcd-2和etcd-3
   除集群參數行ETCD_INITIAL_CLUSTER的IP不動外,其它IP均分別改為192.168.0.203和192.168.0.204   

   

   

重啟etcd使配置文件生效並設置開機自啟動(三台機器均要執行)
   systemctl start etcd
   systemctl enable etcd

如啟動失敗報錯,可執行  journalctl -xe 查看報錯信息后調整,若無,跳過

查看集群健康狀態

/opt/etcd/bin/etcdctl --ca-file=/opt/etcd/ssl/ca.pem --cert-file=/opt/etcd/ssl/server.pem --key-file=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.0.201:2379,https://192.168.0.203:2379,https://192.168.0.204:2379" cluster-health

顯示則成功

 

為APIServer生成證書,修改請求文件中hosts字段包含所有etcd節點IP

cd /usr/local/k8s/TLS/k8s
   vi server-csr.json

   

生產證書

   ./generate_k8s_cert.sh

(3)Master節點部署apiserver,controller-manager和scheduler(在k8s-master1上操作)

上傳 k8s-master.tar.gz 到服務器/usr/local/k8s下
解壓etcd壓縮文件
   cd /usr/local/k8s
   tar -zxvf k8s-master.tar.gz
修改配置文件中的IP信息
   cd /usr/local/k8s/kubernetes/cfg
   vi kube-apiserver.conf

     

復制證書到ssl目錄
   cd /usr/local/k8s/TLS/k8s
   cp *.pem /usr/local/k8s/kubernetes/ssl/
   cp -rf /usr/local/k8s/kubernetes /opt
   cd /usr/local/k8s
   cp *.service /usr/lib/systemd/system

各組件啟動
   systemctl start kube-apiserver
   systemctl start kube-controller-manager
   systemctl start kube-scheduler
   systemctl enable kube-apiserver
   systemctl enable kube-controller-manager
   systemctl enable kube-scheduler
   ps -ef|grep kube 查看組件進程是否啟動

授權啟用TLS
   cd /opt/kubernetes/bin
   cp kubectl /bin/
給kubelet-bootstrap授權
   kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

(4)部署Node節點組件(所有node節點可同時操作)

上傳 k8s-node.tar.gz 到服務器/usr/local/k8s下,部署docker
   cd /usr/local/k8s
   tar -zxvf k8s-node.tar.gz
   tar -zxvf docker-18.09.6.tgz
   mv docker/* /usr/bin
   mkdir /etc/docker
   vi daemon.json 中的IP為master的IP

   

   mv daemon.json /etc/docker/
   mv docker.service /usr/lib/systemd/system
   systemctl start docker
   systemctl enable docker
部署kubelet和kube-proxy
   cp kubelet.service kube-proxy.service /usr/lib/systemd/system
   mv kubernetes /opt
從master中拷貝證書到當前的node節點(僅下兩條命令操作k8s-master1服務器)
   cd /usr/local/k8s/TLS/k8s
   scp ca.pem kube-proxy*.pem root@192.168.0.203:/opt/kubernetes/ssl/
   scp ca.pem kube-proxy*.pem root@192.168.0.204:/opt/kubernetes/ssl/
修改以下兩個配置文件中IP地址
   cd /opt/kubernetes/cfg
   vi kube-proxy.kubeconfig

   

   vi bootstrap.kubeconfig

   

各組件啟動
   systemctl start kubelet
   systemctl start kube-proxy
   systemctl enable kubelet
   systemctl enable kube-proxy
master給Node頒發證書(僅下三條命令操作k8s-master1服務器)
   kubectl get csr
   //將上條命令生成的NMAE屬性加到 kubectl certificate approve后面
   kubectl certificate approve node-csr-MYUxbmf_nmPQjmH3LkbZRL2uTO-_FCzDQUoUfTy7YjI
   kubectl get node

 (5)AAAAA


免責聲明!

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



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