在Centos7.6使用kubeadm部署k8s 1.14.3


K8s不是一個軟件,而是一堆軟件的集合,由於這堆軟件各自獨立,因此可能k8s安裝過程很容易出現問題

K8s部署有多種方式,本文使用kubeadm部署,從易操作性和可控性來說屬於中等的方式

 

環境:centos7.6,k8s 1.14.3

 


 

K8s安裝前設置

以下操作在所有節點操作(也就是master1和node1)

 

關閉防火牆、selinux和swap,分別運行:

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

swapoff -a

sed -i 's/.*swap.*/#&/' /etc/fstab

 

 

 

PS:生產環境在安裝完k8s后要考慮網絡安全(例如防火牆開啟)的方案,本文沒對此說明

 

配置內核參數,將橋接的IPv4流量傳遞到iptables的鏈,新建或修改文件/etc/sysctl.d/k8s.conf,文件內容如下:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

 

 

 

運行sysctl --system

 

配置國內yum源,分別運行:

mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

yum clean all && yum makecache

 

配置國內Kubernetes源,新建或修改文件/etc/yum.repos.d/kubernetes.repo,文件內容如下:

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

 

 

 

配置 docker 源,運行:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

 


 

安裝kubeadm、kubelet、kubectl

以下操作在所有節點操作(也就是master1和node1)

 

運行yum install -y kubelet-1.14.3 kubeadm-1.14.3 kubectl-1.14.3,安裝k8s 3大組件。

其中,Kubelet負責與其他節點集群通信,並進行本節點Pod和容器生命周期的管理。Kubeadm是Kubernetes的自動化部署工具,降低了部署難度,提高效率。Kubectl是Kubernetes集群管理工具。

 

運行systemctl enable kubelet,設置kubelet開機運行

 


 

部署master節點

以下操作在master1做

 

進行Kubernetes集群初始化,運行:

kubeadm init --kubernetes-version=1.14.3 --apiserver-advertise-address=192.168.31.141 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

其中kubernetes-version參數是k8s版本

apiserver-advertise-address是master節點的ip

pod-network-cidr是定義POD的網段(不用想這個網段是否存在,因為這是k8s的內部虛擬的網絡)

PS:kubeadm init很容易出錯,如果出錯可以運行kubeadm reset重置,然后就可以重新kubeadm init

 

PS:這里會卡很久,請耐心等待

 

 

 

成功的樣子,注意要把kubeadm join這段話拷出來,后面node加入集群會用到

 

 

 

配置kubectl工具,分別運行:

mkdir -p /root/.kube

cp /etc/kubernetes/admin.conf /root/.kube/config

 

然后運行kubectl get nodes可以查看到k8s集群的所有節點,可見有master節點

PS:在實際操作中發現,節點加入集群后,其status要等幾分鍾才變成ready(ready說明正常)

 

 

 

部署flannel網絡,運行:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

 


 

部署node節點

以下操作在node1做

 

之前kubeadm init成功后有一段話要拷出來,現在可以運行他,這是讓node加入集群

 

 

 


 

集群狀態檢測

以下操作在master1做

 

運行kubectl get nodes,可見node1已加到集群

PS:在實際操作中發現,節點加入集群后,其status要等幾分鍾才變成ready(ready說明正常)

 

 

 

創建Pod(以nginx為例,注意這會占用80端口)以驗證集群是否正常,分別運行:

PS:此操作不是必須,有信心的可以不做,避免多裝東西

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc

 

成功的樣子

 

 

 


 

部署Dashboard

Dashboard是k8s自帶的查看k8s集群運行信息的圖形界面軟件

PS:注意只可以查看而不能操作

 

以下操作在master1做

 

創建Dashboard的yaml文件,分別運行:

PS:其中的30001是Dashboard的端口

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml

sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml

 

部署Dashboard,分別運行:

kubectl create -f kubernetes-dashboard.yaml

 

創建完成后,檢查相關服務運行狀態,分別運行:

kubectl get deployment kubernetes-dashboard -n kube-system

kubectl get pods -n kube-system -o wide

kubectl get services -n kube-system

netstat -ntlp|grep 30001

成功的樣子

 

 

 

創建一個用於Dashboard的用戶以及獲取用戶的令牌(token),分別運行:

kubectl create serviceaccount  dashboard-admin -n kube-system

kubectl create clusterrolebinding  dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

當運行最后一行,有輸出token,注意token要保存好

 

 

 

使用firefox(注意chrome和ie都不行)訪問https://192.168.31.141:30001/(ip是master1的),中途有什么危險警告都點通過,直到下圖

PS:令牌就是上面的token的值

 

 

 

看到下圖說明Dashboard部署成功,也說明k8s部署成功

 

 


免責聲明!

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



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