Centos7.7使用kubeadm快速部署K8s集群(適合新手)


部署環境:

以下實驗都是在VM虛擬機中進行部署的,僅供個人學習測試,不建議直接上生產環境.

PS:其中,master的CPU核數至少需要2核,還沒有測試過1G內存是否可以正常安裝

節點   系統   CPU核數   內存   磁盤   IP  
k8s-master   Centos7.7minimal   2核 2G   20G 192.168.2.130
k8s-node01 Centos7.7minimal 1核 1G 20G 192.168.2.134  
k8s-node02 Centos7.7minimal 1核 1G 20G 192.168.2.135

 

 

 

 

 

 

部署步驟:


三個節點分別執行以下命令
192.168.2.130執行該命令
hostnamectl set-hostname k8s-master
192.168.2.134執行該命令
hostnamectl set-hostname k8s-node01
192.168.2.135執行該命令
hostnamectl set-hostname k8s-node02

 

三個節點全部執行以下命令
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
swapoff -a                         #關閉swap交換分區
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab      #禁止swap交換分區開機自啟


#配置hosts文件
cat >> /etc/hosts << EOF        
192.168.2.130 k8s-master
192.168.2.134 k8s-node01
192.168.2.135 k8s-node02
EOF


#內核調整,將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system                        #使上一條命令的配置生效
yum install -y ntpdate                  #安裝ntpdate用於校准時間,確保master和node時間同步
ntpdate time.windows.com            #校准時間
yum install wget -y


#如果以下安裝docker的方式失敗,可以參考我的博客https://www.cnblogs.com/biaopei/p/11937292.html
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
#以下命令用來配置鏡像地址..
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl enable docker
systemctl start docker


#因為默認k8s鏡像倉庫需要翻出去,所以配置國內鏡像地址
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet

 

以下操作只需要在master中執行
#記得將192.168.2.130修改為master的ip地址,其余不變.需要等待幾分鍾才可執行完成.會提示[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.只是警告可忽略.(如果master的cpu核數只有1核,這里還會提示cpu核數達不到要求的2核)
kubeadm init \
--apiserver-advertise-address=192.168.2.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16


#執行完上一條語句后,會有類似如下命令的提示,根據提示執行即可.還有一條kubeadm join 192.168.2.130:6443 --token,這個是用來在node上執行,加入到k8s集群中的,我們稍后需要用到
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

以下操作在兩個node中執行
#不要直接復制這里的,是kubeadm init執行完成后,后面提示的那條語句.就是我們剛才說的那個
kubeadm join 192.168.2.130:6443 --token c1qboh.pg159xmk61z5rbeg \
    --discovery-token-ca-cert-hash sha256:ff09b3a7b0989de094b73e811bf378d8ab1cf3c1e413e3753ebd5de826075931

以下操作在master執行
#配置flannel網絡
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

vi kube-flannel.yml
#修改以下行對應內容,注意不能使用tab鍵,只能使用空格進行對啟,注意格式要按照原來的,不能多一個空格,也不能少一個空格

106    image: lizhenliang/flannel:v0.11.0-amd64   
120    image: lizhenliang/flannel:v0.11.0-amd64

kubectl apply -f kube-flannel.yml
ps -ef|grep flannel|grep -v grep                   #可能需要10分鍾左右啟動初始化完成,才有返回結果.然后再執行下一步
kubectl get nodes                               #可能需要等待十幾分鍾,狀態才能全部轉為ready.然后再執行下一步
kubectl get pod -n kube-system                       #可能需要等待十幾分鍾,直至所有狀態才能全部轉為ready 1/1.然后再執行下一步
kubectl create deployment nginx --image=nginx                #創建nginx服務
kubectl expose deployment nginx --port=80 --type=NodePort       #暴露nginx服務80端口
kubectl get pods,svc                               #查看運行中的服務80:31214/TCP.我們從宿主機訪問masterip:31214即可訪問到nginx服務.但是也需要等待幾分鍾,直到該端口可以telnet通..然后再執行下一步

訪問nginx,效果:


#配置k8s UI界面
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml


vi kubernetes-dashboard.yaml
#修改以下行對應內容,注意不能使用tab鍵,只能使用空格進行對啟,注意格式要按照原來的,不能多一個空格,也不能少一個空格

......
111       - name: kubernetes-dashboard
112         image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1   # 替換此行
......

157 spec:
158   type: NodePort     # 增加此行
159   ports:
160     - port: 443
161       targetPort: 8443
162       nodePort: 30001   # 增加此行
163   selector:
164     k8s-app: kubernetes-dashboard


kubectl apply -f kubernetes-dashboard.yaml                         #現在我們可以訪問https://192.168.2.130:30001.當然也需要等一會.注意是https

訪問K8S UI界面,效果:

會提示鏈接不安全,點擊高級->接受風險並繼續即可


kubectl create serviceaccount dashboard-admin -n kube-system                  #創建管理員帳號
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin      #配置管理員帳號為集群管理員帳號?

#執行以下命令后,會生成對應的token,在https://192.168.2.130:30001中選擇token,輸入該token即可登陸k8s管理后台
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

輸入Token,登陸K8S UI界面,效果:

 

最終效果

 

 

 

 

 

 K8S部署完成.

本文參考自:

https://cloud.tencent.com/developer/article/1509412

一次成功,感謝原文作者的分享!


免責聲明!

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



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