kubeadm 是官方社群推出的一個用于快速部署 kubernetes 叢集的工具,這個工具能通過兩條指令完成一個 kubernetes 叢集的部署:
- 建立一個Master節點 kubeadm init
- 将Node節點加入到目前叢集中 $ kubeadm join <Master 節點的IP和端口>
環境準備:
伺服器三台(虛拟機,192.168.228.10/11/12,2C/2G,centos7.5)
系統配置:
- 關閉防火牆
# 臨時關閉防火牆 systemctl stop firewalld # 永久關閉防火牆 systemctl disable firewalld
- 關閉selinux
# 臨時關閉selinux setenforce 0 # 永久關閉selinux sed -i 's/enforcing/disabled/' /etc/selinux/config
- 關閉swap
# 臨時關閉swap swapoff -a # 永久關閉 # 注釋/etc/fstab檔案中swap配置 /dev/mapper/centos-root / xfs defaults 0 0 UUID=44db6c96-374e-4fca-badb-bbcf4adc1f9d /boot xfs defaults 0 0 #/dev/mapper/centos-swap swap swap defaults 0 0 echo vm.swappiness=0 >> /etc/sysctl.conf # 重新開機 reboot
- 設定主機名
# 192.168.228.10 hostnamectl set-hostname master # 192.168.228.11 hostnamectl set-hostname slave1 # 192.168.228.12 hostnamectl set-hostname slave2
- 配置hosts
cat >> /etc/hosts << EOF 192.168.228.10 master 192.168.228.11 slave2 192.168.228.12 slave2 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
- 配置時間同步
timedatectl set-timezone Asia/Shanghai yum install ntpdate -y ntpdate time.windows.com
所有節點安裝Docker/kubeadm/kubelet
- 安裝docker
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 systemctl enable docker && systemctl start docker docker --version
- 添加阿裡雲yum軟體源
# 設定倉庫位址 cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF # 添加yum源 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
- 安裝kubeadm、kubelet、kubectl
yum install -y kubelet kubeadm kubectl systemctl enable kubelet
-
克隆slave1、slave2
略(更改網絡ip、主機名)
部署 Kubernetes Master
- 在master(192.168.228.10)執行
kubeadm init --apiserver-advertise-address=192.168.228.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
- 使用 kubectl 工具
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 檢視節點資訊 kubectl get nodes
- 安裝pod網絡插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入kubernetes Node
- 在192.168.228.11、192.168.228.12上執行(之前執行kubeadm init 輸出的最後一段指令)
kubeadm join 192.168.228.10:6443 --token qbdetu.33vjzp8v66ohubhp \ --discovery-token-ca-cert-hash sha256:910add3987188a8fd61ba0aef75623c9b0b4732860cfd834605769529500271d
測試kubernetes叢集
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
這時候通路192.168.228.11:32160 / 192.168.228.12:32160,可以看到大家熟知的頁面:Welcome to nginx!