1. 程式人生 > 其它 >2020 實戰CentOS7.8 安裝 Kubernetes1.18.6 教程

2020 實戰CentOS7.8 安裝 Kubernetes1.18.6 教程

技術標籤:KubernetesCentOSDockerdockerkuberneteslinuxk8scentos

2020 實戰CentOS7.8 安裝 Kubernetes1.18.6 教程


kubernetes,簡稱K8s,是用8代替8個字元“ubernete”而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
按照與允許Google每週執行數十億個容器的相同原則設計,Kubernetes可以在不增加運營團隊的情況下進行擴充套件。
無論是在本地測試還是在全球性企業中執行,Kubernetes的靈活性都會隨著您的需求而增長,無論您的需求多麼複雜,它都能始終如一地輕鬆交付應用程式。
混合雲切記一定要打通網路

統一安裝環境(如果你節點很多,自己規劃好)

系統節點IP
CentOS7.8 64位3.10.0-1127.13.1.el7.x86_64Master10.10.10.10
CentOS7.8 64位3.10.0-1127.13.1.el7.x86_64Node1192.168.100.100

本次測試環境兩臺伺服器,一臺Master節點,一臺Node1節點

基本配置

第一次寫,寫的不好得地方還請諒解

修改主機名和本地hosts解析

通過修改vim /etc/hostname 來修改主機名
Master節點修改為 master1
Node1節點修改為 node1
修改vim /etc/hosts 來相互解析
兩臺都相互新增如下解析

10.10.10.10				master1
192.168.100.100			node1

時間同步

企業中建議使用時間同步伺服器
使用chronyd服務
systemctl start chronyd
systemctl enable chronyd
date命令來驗證時間

禁用iptables和firewalld服務

關閉firewalld服務

systemctl stop firewalld
systemctl disable firewalld
關閉iptables服務
systemctl stop iptables
systemctl disable iptables

禁用selinux

Selinux是Linux系統下的一個安全服務,如果不關閉它,在安裝叢集中回產生各種各樣的奇葩問題
編輯 /etc/selinux/config 檔案,修改 SELINUX 的值為disabled
SELINUX=disabled
修改完成後需要重啟系統生效
檢視命令: getenforce

禁用swap分割槽

編輯/etc/fstab 註釋swap分割槽一行,重啟Linux即可

修改Linux的核心引數

修改Linux的核心引數,新增網橋過濾和地址轉發的功能
編輯/etc/sysctl.d/kubernetes.conf檔案,新增如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
載入網橋過濾模組
modprobe br_netfilter
檢視網橋過濾模組是否載入成功
lsmod | grep br_netfilter
重新載入配置
sysctl -p

配置ipvs功能

中kubernetes中service有兩種代理模型,一種是基於iptables的,一種是基於ipvs的,兩者比較的話,ipvs的效能明顯要高一些,但是如果要使用它,需要手動載入ipvs模組
安裝ipset和ipvsadm

yum install ipset ipvsadm -y

新增需要載入的模組寫入指令碼檔案( —是兩個 橫槓 )

cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe — ip_vs
modprobe — ip_vs_rr
modprobe — ip_vs_wrr
modprobe — ip_vs_sh
modprobe — nf_conntrack_ipv4
EOF

為指令碼檔案新增執行許可權

chmod +x /etc/sysconfig/modules/ipvs.modules

執行指令碼檔案

/bin/bash /etc/sysconfig/modules/ipvs.modules

檢視對應的模組是否載入成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

安裝docker

這裡是指定版本安裝docker的 3:19.03.13-3.el7 版本

sudo yum -y install docker-ce-19.03.13-3.el7

根據文件安裝後,記住新增開機自動啟動

systemctl enable docker

配置映象加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kq1fsint.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

更多可以檢視阿里雲映象:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.3e221b11qRSjZE

安裝kubernetes

更多可以檢視阿里雲映象:https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11qRSjZE

這裡使用指定版本安裝kubernetes的 1.19.4-0 版本

yum install -y kubelet-1.19.4-0 kubeadm-1.19.4-0 kubectl-1.19.4-0

檢視文件地址安裝好後,在執行如下操作

注意:以上所有操作每一臺節點也都需要安裝

初始化叢集

通過kubeadm config images list檢視需要安裝的映象和版本

建立叢集:

kubeadm init \
--kubernetes-version=v1.19.4 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--apiserver-advertise-address=10.10.10.10 \
--v=6

完成會看到這句話

Your Kubernetes control-plane has initialized successfully!

就代表初始化成功,否則失敗
然後執行如下操作:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

記錄初始化完成後的最後一條命令

kubeadm join 10.10.10.10:6443 --token azyw4b.009sd5vupsnwrtz3     --discovery-token-ca-cert-hash sha256:a779406c375aabea58040a6501242ff8f3441b4d7d4c079f6f8083df2b5b2741

原本的是有效時間過期的加入叢集命令,可以通過如下操作建立一個永久令牌

kubeadm token create --ttl 0 --print-join-command

使用令牌在node節點操作一次

檢視節點狀態:應該此時的狀態為NotReady是未安裝網路外掛

kubelet get nodes

檢視節點狀態

安裝網路外掛

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

檢視狀態,等待就緒

watch kubectl get pod -n kube-system -o wide

檢視到狀態為Running為止

在次檢視節點狀態:應該此時的狀態為Ready

kubelet get nodes

到此,K8S叢集搭建基本工作加完成了