Kubernetes集群安裝


概 述

本⽂准備部署⼀個 ⼀主兩從 的 三節點 Kubernetes集群,整體節點規划如下表所示:

各個節點的軟件版本:

  • 操作系統: CentOS-7.4-64Bit
  • Docker版本: 1.13.1
  • Kubernetes版本: 1.13.1

各節點都需要安裝以下組件:

  • Docker :不⽤多說了吧
  • kubelet :運⾏於所有 Node上,負責啟動容器和 Pod
  • kubeadm :負責初始化集群
  • kubectl : k8s命令⾏⼯具,通過其可以部署/管理應⽤ 以及CRUD各種資源

准備工作

#所有節點關閉防⽕牆
systemctl disable firewalld.service
systemctl stop firewalld.service

禁⽤SELINUX
setenforce 0
vi /etc/selinux/config
SELINUX=disabled

#所有節點關閉 swap
swapoff -a

#設置所有節點主機名
hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-node-1
hostnamectl --static set-hostname k8s-node-2

#編輯 /etc/hosts ⽂件 加入 主機名/IP加⼊ hosts解析
192.168.39.79 k8s-master
192.168.39.77 k8s-node-1
192.168.39.78 k8s-node-2

組件安裝

  1. Docker安裝

不贅述了,參考 Docker環境安裝

  1. kubelet、kubeadm、kubectl安裝(所有節點)
#配置 repo
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-
x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF

執⾏如下指令來進⾏安裝

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX= disabled/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

Master節點配置

為了應對網絡不暢通的問題,我們國內⽹絡環境只能提前⼿動下載相關鏡像並重新打 tag

docker pull mirrorgooglecontainers/kube-apiserver:v1.13.1
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.1
docker pull mirrorgooglecontainers/kube-proxy:v1.13.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
docker tag mirrorgooglecontainers/kube-apiserver:v1.13.1
k8s.gcr.io/kube-apiserver:v1.13.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.1
k8s.gcr.io/kube-controller-manager:v1.13.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.13.1
k8s.gcr.io/kube-scheduler:v1.13.1
docker tag mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kubeproxy:v1.13.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64quay.io/coreos/flannel:v0.10.0-amd64
docker rmi mirrorgooglecontainers/kube-apiserver:v1.13.1
docker rmi mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker rmi mirrorgooglecontainers/kube-scheduler:v1.13.1
docker rmi mirrorgooglecontainers/kube-proxy:v1.13.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd:3.2.24
docker rmi coredns/coredns:1.2.6
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

然后再在 Master節點上執⾏如下命令初始化 k8s集群:

kubeadm init --kubernetes-version=v1.13.1 --apiserver-advertise-address 192.168.39.79 --pod-network-cidr=10.244.0.0/16
  • kubernetes-version : ⽤於指定 k8s版本
  • apiserver-advertise-address :⽤於指定使⽤ Master的哪個network interface進⾏通信,若不指定,則 kubeadm會⾃動選擇具有默認⽹關的 interface
  • pod-network-cidr :⽤於指定Pod的⽹絡范圍。該參數使⽤依賴於使⽤的⽹絡⽅案,本⽂
    將使⽤經典的flannel⽹絡⽅案。
  1. kubectl
    在 Master上⽤ root⽤戶執⾏下列命令來配置 kubectl:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
echo $KUBECONFIG
  • 安裝Pod⽹絡
    安裝 Pod⽹絡是 Pod之間進⾏通信的必要條件,k8s⽀持眾多⽹絡⽅案,這⾥我們依然選⽤經典的
    flannel⽅案
  • ⾸先設置系統參數:
sysctl net.bridge.bridge-nf-call-iptables=1
  • 然后在 Master節點上執⾏如下命令
kubectl apply -f kube-flannel.yaml

kube-flannel.yaml ⽂件下載地址:

這里下載

檢查⼀下 CoreDNS Pod是否正常運⾏

kubectl get pods --all-namespaces -o wide
kubectl get nodes


添加 Slave節點

在兩個 Slave節點上分別執⾏如下命令來讓其加⼊Master上已經就緒了的 k8s集群:

kubeadm join --token <token> <master-ip>:<master-port> --discoverytoken-ca-cert-hash sha256:<hash>

如果 token忘記,則可以去 Master上執⾏如下命令來獲取:

kubeadm token list

檢驗安裝結果

  • 查看節點狀態
kubectl get nodes

  • 查看所有 Pod狀態
kubectl get pods --all-namespaces -o wide

拆卸集群

⾸先處理各節點:

kubectl drain <node name> --delete-local-data --force --ignoredaemonsets
kubectl delete node <node name>

⼀旦節點移除之后,則可以執⾏如下命令來重置集群:

kubeadm reset

安裝 Dashboard (k8s集群可視化工具)

  • ⾸先⼿動下載鏡像並重新打標簽:(所有節點)
docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0
docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker image rm registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0
  • 安裝 dashboard:
kubectl create -f dashboard.yaml

dashboard.yaml ⽂件下載地址:

這里下載

查看 dashboard的 pod是否正常啟動,如果正常說明安裝成功:

 kubectl get pods --namespace=kube-system

查看 dashboard的外⽹暴露端口

kubectl get service --namespace=kube-system

⽣成私鑰和證書簽名

openssl genrsa -des3 -passout pass:x -out dashboard.pass.key 2048
openssl rsa -passin pass:x -in dashboard.pass.key -out dashboard.key
rm dashboard.pass.key
openssl req -new -key dashboard.key -out dashboard.csr
#如遇輸⼊,⼀路回⻋ 即可

⽣成SSL證書:

openssl x509 -req -sha256 -days 365 -in dashboard.csr -signkey
dashboard.key -out dashboard.crt

然后將⽣成的 dashboard.keydashboard.crt 置於路徑 /home/share/certs
創建 dashboard⽤戶

 kubectl create -f dashboard-user-role.yaml

dashboard-user-role.yaml⽂件下載地址:

這里下載

獲取登陸token

kubectl describe secret/$(kubectl get secret -nkube-system |grep
admin|awk '{print $1}') -nkube-system

token既然⽣成成功,接下來就可以打開瀏覽器,輸⼊ token來登錄進集群管理頁面:


免責聲明!

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



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