手動搭建k8s集羣,搭建第一個程序

什麼是Kubernetes?

Kubernetes(k8s)是自動化容器操作的開源平臺,這些操作包括部署,調度和節點集羣間擴展。如果你曾經用過Docker容器技術部署容器,那麼可以將Docker看成Kubernetes內部使用的低級別組件。Kubernetes不僅僅支持Docker,還支持Rocket,這是另一種容器技術。 使用Kubernetes可以:

  • 自動化容器的部署和複製
  • 隨時擴展或收縮容器規模
  • 將容器組織成組,並且提供容器間的負載均衡
  • 很容易地升級應用程序容器的新版本
  • 提供容器彈性,如果容器失效就替換它,等等…

1. 所有節點配置hosts

vi /etc/hosts 
添加:
192.168.220.131 K8S-master01 
192.168.220.132 K8S-master02 
192.168.220.133 K8S-master03  
192.168.220.135 K8S-node01 
192.168.220.136 K8S-node02

2. 所有節點關閉防火牆、selinux、dnsmasq、swap

systemctl disable --now firewalld 
systemctl disable --now dnsmasq #找不到此文件 
systemctl disable --now NetworkManager

3. 所有節點關閉selinux

#獲取selinux的狀態 
sestatus 
setenforce 0 

將/etc/sysconfig/selinux文件中的SELINUX改爲disabled: 
查看: grep -vE "#|^$" /etc/sysconfig/selinux 
vim /etc/sysconfig/selinux 
SELINUX=disabled SELINUXTYPE=targeted 

//默認爲enforcing,可設置爲enforcing、permissive、disabled中的一項。 SELINUXTYPE=targeted //目前只能設置成targeted、mls中的一項 注意: 1)如果從 disable 切換到enforcing或permissive模式時,由於系統必須要針對文檔寫入安全性本文的信息 ,因此開機過程會花費不少時間在等待重新寫入 SELinux 安全性本文 (有時也稱爲 SELinux Label), 而且在寫完之後還得要再次的重新啓動。 2)如果已經運行在Enforcing模式,但是可能由於SELinux的設置問題, 導致某些服務無法正常的運行,此時可以將Enforcing 模式改爲Permissive模式,讓 SELinux只會警告無法順利聯機的信息,而不是直接阻擋主體程序的讀取權限。

4. 所有節點關閉swap分區

swapoff -a && sysctl -w vm.swappiness=0

註釋掛載選項

grep "swap" /etc/fstab 

確認swap已經關閉 
free -h 若都顯示 0 則表示關閉成功

在這裏插入圖片描述

5. 所有節點同步時間

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
echo 'Asia/Shanghai' >/etc/timezone 
ntpdate time2.aliyun.com # 沒有就 yum -y install ntpdate 
# 加入到crontab 
crontab -e 

*/5 * * * * ntpdate time2.aliyun.com 
# 加入到開機自動同步, 
vi /etc/rc.local 

ntpdate time2.aliyun.com

6. 所有節點配置limit

ulimit -SHn 65535

7. Master01節點 免密鑰登錄其他節點

ssh-keygen -t rsa 

for i in K8S-master01 K8S-master02 K8S-master03 K8S-node01 K8S-node02;do ssh-copy-id -i .ssh/id_rsa.pub $i ;done

8. 所有節點配置內核參數,將橋接的IPv4流量傳遞到iptables的鏈

[root@master01 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
##
sysctl --system

9. 所有節點安裝常用包

 yum install vim bash-completion net-tools gcc -y

10. 所有節點使用aliyun源安裝docker-ce

[root@master01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@master01 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master01 ~]# yum -y install docker-ce

11. 所有節點添加aliyundocker倉庫加速器

[root@master01 ~]# mkdir -p /etc/docker
[root@master01 ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
EOF
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart docker

12. 所有節點安裝kubectl、kubelet、kubeadm

12.1 所有節點添加阿里kubernetes源
[root@master01 ~]# cat <<EOF > /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
EOF
12.2 所有節點安裝
[root@master01 ~]# yum install kubectl kubelet kubeadm
[root@master01 ~]# systemctl enable kubelet

13. Master01節點初始化k8s集羣

[root@master01 ~]# kubeadm init --kubernetes-version=1.18.0  \
--apiserver-advertise-address=192.168.122.21   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
ht

POD的網段爲: 10.122.0.0/16, api server地址就是Master01節點IP。
這一步很關鍵,由於kubeadm 默認從官網k8s.grc.io下載所需鏡像,國內無法訪問,因此需要通過–image-repository指定阿里雲鏡像倉庫地址。

14. 記錄生成的最後部分內容,此內容需要在其它節點加入Kubernetes集羣時執行。

Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.220.131:6443 --token xtraso.niao24xwwmzmavxd \ --discovery-token-ca-cert-hash sha256:5dcf7e2616534d9c91518b43b81ac566234b3d9f9bc57c9e2e03dfc5fd8f16b6

15. 配置安裝訪問dashboad:

根據中文官網教程操作:
添加鏈接描述

獲取token方式:

# 在 Master01 節點上執行此命令
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)

登錄界面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章