Kubernetes 集群搭建 v1.19.3
- 準備開始
- 硬體準備
- 高能預警
- 博主的虛擬機配置
- 修改 Linux系統 環境配置
- 安裝依賴和工具
- 安裝容器運行時 ——Docker
- 安裝 kubelet / kubeadm / kubectl
- 安裝 Calico 網路組件
準備開始
硬體準備
- 一臺或多臺運行著下列系統的機器:
Ubuntu 16.04+ / Debian 9+ / CentOS 7 / Red Hat Enterprise Linux (RHEL) 7 /
Fedora 25+ / HypriotOS v1.0.1+ / Container Linux (測驗 1800.6.0 版本) - 每臺機器的記憶體在 2 GB 以上,CPU 2核以上
- 集群中的所有機器的網路彼此均能相互連接(公網和內網都可以)
- 節點之中不可以有重復的主機名、MAC 地址或 product_uuid
高能預警
- 本文多數命令需要在所有節點上執行,所以部分只需要在某些節點上運行的會有提示,請各位讀者仔細閱讀后食用~
博主的虛擬機配置
| CPU | Memory | Disk |
|---|---|---|
| Intel? Xeon? CPU E5-2650 @ 2.00GHz(4 核心數) | 4 GB | 20 GB |
| hostname | IP |
|---|---|
| master | 10.10.102.91 |
| node01 | 10.10.102.92 |
| node02 | 10.10.102.93 |
修改 Linux系統 環境配置
`關閉集群上所有主機的防火墻`
systemctl stop firewalld.service
systemctl disable firewalld.service
`配置 iptables 橋接及路由轉發`
cat <<EOF > /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
`使剛修改的配置生效, 默認 /etc/sysctl.conf 中加載`
sysctl -p
`關閉交換磁區(如果不關閉,kubelet 服務將無法啟動)`
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
`關閉 selinux(如果不關閉,docker將啟動容器會報錯)`
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
安裝依賴和工具
yum install -y yum-utils device-mapper-persistent-data lvm2 nfs-utils vim
安裝容器運行時 ——Docker
- 容器運行時是負責運行容器的軟體,containerd / CRI-O / Docker 都可以作為在 Linux 上結合 Kubernetes 使用的幾種通用容器運行時,本文將以最常用的 Docker 作為 Kubernetes 集群的容器運行時為例,
`添加 docker 的阿里云源`
yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
`安裝 docker`
yum install -y docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 containerd.io
`設定docker服務開機啟動,并啟動docker服務`
sudo systemctl enable docker
sudo systemctl start docker
安裝 kubelet / kubeadm / kubectl
`配置阿里云鏡像倉庫`
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
`安裝 kubelet / kubeadm / kubectl`
yum install -y kubelet-1.19.3-0 kubeadm-1.19.3-0 kubectl-1.19.3-0 \
--disableexcludes=kubernetes # 只從 kubernetes 倉庫下載
`使用 kubeadm 初始化集群(只在master節點上執行)`
kubeadm init \
--apiserver-advertise-address=10.10.102.91 \ # 設定 ApiServer
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \ # 為服務的虛擬 IP 地址另外指定 IP 地址段
--pod-network-cidr=10.244.0.0/16 \ # 指明 pod 網路可以使用的 IP 地址段,
--ignore-preflight-errors=all
- 上述命令執行會花費一定的時間,且執行完畢后,我們會看到包含如下字樣的提示 (這里提醒小白千萬不要對著博客閉著眼睛 Ctrl + C / V 啦~),我們復制在本機控制臺上的這段話,在除master以外的節點上運行,這樣就可以把子節點都加入到master節點了,
kubeadm join 10.10.102.91:6443 --token q82kdg.swvn4tlwnib2g2x6 \
--discovery-token-ca-cert-hash sha256:73243b4debf701be995052a8c27c8931acc47f04a9c3b7422d363352585d14c1
- 等待上述命令執行完畢后,在master節點上執行下面的命令,子節點的名字已經出現在螢屏中了,
kubectl get nodes
- 但是,細心的讀者會發現,子節點雖然已經加入集群,但是狀態卻是 <Not Ready>的,這是因為我們還沒有安裝網路組件,節點之間的通信依賴于網路組件,如 Fannel / Calico,接下來將以Calico為例,安裝 Kubernetes 的網路組件,
安裝 Calico 網路組件
`只在 master 節點執行`
`下載 calico.yaml`
wget http://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/calico.yaml
`修改 CALICO_IPV4POOL_CIDR,和初始化集群時的 pod-network-cidr 引數一致`
vim calico.yaml
`calico.yaml`
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16" # 修改這里
`安裝 calico`
kubectl apply -f calico.yaml
- 上述命令執行完畢需要一定的時間,我們可以執行下面的命令,待到所有的 pod 都準備就緒,一個完整的 Kubernetes 集群就已經部署完畢了
watch kubectl get pod -n kube-system
感謝閱讀,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233988.html
標籤:其他
下一篇:Flutter 常用功能合集
