搭建kubernetes叢集詳細步驟(包含所有映象資源)
搭建kubernetes叢集
準備工作:
搭建k8s叢集之前首先準備好≥3臺的機器
並做好免密登陸
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub <
各node節點IP>
設定好主機名和時間同步
設定主機名命令:
[[email protected] ~]# hostnamectl set-hostname k8s-master01
172.19.96.11 k8s-master01---------->hostnamectl set-hostname k8s-master01
172.19.90.87 k8s-node01 ---------->hostnamectl set-hostname k8s-node01
172.19.90.88 k8s-node02---------->hostnamectl set-hostname k8s-node02
172.19.90.89 k8s-node03---------->hostnamectl set-hostname k8s-node03
修改master和各node的hosts檔案:vim /ets/hosts 新增如下內容
##叢集##
172.19.96.11 k8s-master01
172.19.90.87 k8s-node01
172.19.90.88 k8s-node02
172.19.90.89 k8s-node03
目前時間都同步:
Master和node節點全部都要安裝的程式如下,每個伺服器上都執行一次
安裝之前配置一下yum倉庫
[[email protected] ~]# cd /etc/yum.repos.d/
Docker-ce的直接阿里雲官方找到了 直接下載下來
K8s的沒找到這裡自己編寫一個寫入內容如下:
[[email protected] ]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
[[email protected] ]# rpm --import yum-key.gpg
[[email protected] ]# rpm --import rpm-package-key.gpg
[[email protected] ]# scp kubernetes.repo docker-ce.repo k8s-node01:/etc/yum.repos.d/
[[email protected] ]# scp kubernetes.repo docker-ce.repo k8s-node02:/etc/yum.repos.d/
[[email protected] ]# scp kubernetes.repo docker-ce.repo k8s-node03:/etc/yum.repos.d/
在各node節點都需要執行:
[[email protected] ]# rpm --import yum-key.gpg
[[email protected] ]# rpm --import rpm-package-key.gpg
Master和node各節點都需要執行
[[email protected] ]# yum install docker-ce kubelet kubeadm kubectl
[[email protected] ]# yum install docker-ce kubelet kubeadm kubectl(每個node)
Master和各node節點都需要關閉防火牆,防火牆相關操作
Master和各node節點都需要開啟docker
[[email protected] ]# systemctl daemon-reload
[[email protected] ]# systemctl start docker
Master和各node節點都需要開機自啟動
systemctl enable docker kubelet
驗證一下iptables和ip6tables
[[email protected] ~]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
1
[[email protected] ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
不是1的話修改路徑下的檔案並儲存
檢視一下kubelet的檔案位置:
[[email protected] ~]# rpm -ql kubelet
/etc/kubernetes/manifests
/etc/sysconfig/kubelet
/etc/systemd/system/kubelet.service
/usr/bin/kubelet
[[email protected] ~]# cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
[[email protected] ~]# rpm -ql kubeadm
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
/usr/bin/kubeadm
寫一個下載映象的指令碼,因為直接去國外的地址下載會被牆
指令碼內容如下:(注意指令碼內容有些映象是後期搭建Dashboard和Helm等等用的,如果有些映象不需要也可以自己看情況修改一下指令碼)
#!/bin/bash
images=(kube-apiserver:v1.12.0 kube-controller-manager:v1.12.0 kube-scheduler:v1.12.0 kube-proxy:v1.12.0 pause:3.1 etcd:3.2.24 coredns:1.2.2 kubernetes-dashboard-amd64:v1.10.0 tiller:v2.6.1)
for ima in ${images[@]}
do
docker pull registry.cn-shanghai.aliyuncs.com/wangting/$ima
docker tag registry.cn-shanghai.aliyuncs.com/wangting/$ima k8s.gcr.io/$ima
docker rmi -f registry.cn-shanghai.aliyuncs.com/wangting/$ima
docker tag registry.cn-shanghai.aliyuncs.com/wangting/tiller:v2.6.1 gcr.io/kubernetes-helm/tiller:v2.6.1
done
Master和各node節點都需要執行一下指令碼,一次把所需的映象全部下載到位並打好標籤
[[email protected] ~]# bash -x kubernetes.sh
Master上執行kubeadm init命令;
[[email protected] ~]# kubeadm init --kubernetes-version=v1.12.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
(此命令執行成功後,在輸出的內容裡能會看到join的命令,複製一下備著有用!)
===
kubeadm join 172.19.96.11:6443 --token 9z9bo5.wh3bdd44rgpxbnkr --discovery-token-ca-cert-hash sha256:19a3f3804eb643ca4ffad56d272fe0da0b222f4567d16c61a9e885c1489cda32
所有節點node上執行這個kubeadm join 命令(注意這個kubeadm join裡的祕鑰每個人不一樣,本文件命令不能複製貼上去使用,命令來自於自己剛才執行kubeadm init出來的)
最後開啟dashboard 頁面訪問
Master上執行
[[email protected] ~]# kubectl edit service kubernetes-dashboard --namespace=kube-system
此命令修改頁面訪問的type形式,改成type: NodePort
[[email protected] ~]# kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
此命令獲取dashboard的token,token用來後面頁面訪問使用
最後驗證所有system的pod是否都成功跑了起來,如果部分沒起來describe檢查一下對應的pod
[[email protected] ~]# kubectl get svc -n kube-system
檢視kubernetes-dashboard對外的埠是多少,此埠為外網訪問的埠
效果如下圖: