本次搭建使用到了三個節點 是以需要準備三台主機
三台主機的規劃 ip以及對應主機名
111.11.1.5 111-11-1-5 master
111.11.1.6 111-11-1-6 node
111.11.1.7 111-11-1-7 node
用于自己的環境練習使用 一個node節點也可以
記憶體 3G CPU 2核 磁盤 100
系統初始化操作
關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
關閉iptables
systemctl stop iptables
systemctl disable iptables
關閉selinux
setenforce 0
sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/sysconfig/selinux
關閉swap
swapoff -a
編輯分區配置檔案 /etc/fstab檔案,注釋掉swap分區一行
設定主機名 修改網卡名稱(可按照自己習慣修改 這是一個我修改主機名的腳本)
ss=$(ifconfig ens32 | grep "inet " | awk -F " " '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲') dd=(echo $ss | awk -F “.” ‘{print $1,$2,$3,$4}’)
arr=()
for i in d d ; d o a r r [ dd; do arr[ dd;doarr[{#arr[*]}]=${i}
done;
hostnamectl set-hostname “ a r r [ 0 ] − {arr[0]}- arr[0]−{arr[1]}- a r r [ 2 ] − {arr[2]}- arr[2]−{arr[3]}”
bash
在規劃的master中添加hosts
cat >> /etc/hosts << EOF
111.11.1.5 111-11-1-5
111.11.1.6 111-11-1-6
111.11.1.7 111-11-1-7
EOF
添加網橋過濾和位址轉發功能
cat >> /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
生效
sysctl --system
加載網橋過濾子產品
modprobe br_netfilter
lsmod | grep br_netfilter
配置ipvs功能
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install ipset ipvsadm
cat < /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
時間同步
yum -y install ntpdate
ntpdate -u cn.pool.ntp.org
重新開機
reboot
系統初始化完成
開始安裝docker
檢視鏡像源都有哪些docker版本
yum list docker-ce --showduplicate
指定版本安裝 (不指定client版本會跟server端版本不一樣 之後安裝kubernetes會報錯)
yum -y install docker-ce-19.03.14 docker-ce-cli-19.03.14 containerd.io
給docker添加一個網絡鏡像源
mkdir /etc/docker
cat < /etc/docker/daemon.json
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“registry-mirrors”: [“https://kn0t2bca.mirror.aliyuncs.com”]
}
EOF
重新開機 開機自啟 重新加載docker 檢視版本
systemctl restart docker
systemctl enable docker
systemctl daemon-reload
docker version
安裝k8s
添加k8s鏡像源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
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
安裝kubeadm、kubelet、kubectl 指定版本
yum -y install --setopt=obsoletes=0 kubeadm-1.19.10 kubelet-1.19.10 kubectl-1.19.10
修改kubelet配置
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="–cgroup-driver=systemd"
KUBE_PROXY_MODE=“ipvs”
開機自啟
systemctl enable kubelet
部署kubernetes master(此處需要注意 ip的網段需要不一樣 不然之後coredns會有問題)
kubeadm init
–apiserver-advertise-address=111.11.1.5
–image-repository registry.aliyuncs.com/google_containers
–kubernetes-version=v1.19.10
–pod-network-cidr=11.222.0.0/16
–service-cidr=22.22.0.0/12
會有很長拉取時間 可以再打開一個shell 檢視拉取的鏡像
如圖 出現successfully 成功
按照提示往下走
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
為叢集添加節點 在節點上複制執行
此時在master上執行 檢視節點
kubectl get nodes
預設token有效期24h 過期之後 重新建立token指令
kubeam token create --print-join-command
此時可以發現節點狀态是NotReady的
執行指令 部署網絡插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果一直等待 可以先wget下載下傳下來 再建立
建立會有等待時間 再次檢視 節點已經ready
建立一個 nginx服務
端口暴露
kubectl expose deployment nginx --port=80 --type=NodePort
在浏覽器通路 任意節點ip加端口
此時通過kubeadm部署一個kubernetes叢集完成了