其實沒什麼好說的,搭環境搞了一整天,人已經麻了,踩了很多坑,網上教程的版本大都比較舊,總是和最新版本各種地方不相容,把坑踩完了,k8s目前最新的版本是v1.26,跟著命令敲就行了,我已經重複部署了很多次了,坑已經排完了....
我試驗的是1主2從結構,centos 2c2g 就足夠。
centos7 部署 k8s 1m2n
1 系統環境準備
1.1 配置主機名
[root@localhost ~]# hostnamectl set-hostname master0
[root@localhost ~]# cat /etc/hosts
192.168.19.128 master0
192.168.19.129 node0
192.168.19.130 node1
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
1.2 關閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
1.3 配置ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.19.129
GATEWAY=192.168.19.2
NETMASK=255.255.255.0
DNS1=8.8.8.8
service network restart
# 關閉swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
1.4 安裝ipvs 轉發支援 【所有節點】
# 系統依賴包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
# 開啟ipvs 轉發
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack
1.5 安裝containerd [全部節點安裝]
# 建立 /etc/modules-load.d/containerd.conf 配置檔案:
cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
# 獲取阿里雲YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 下載安裝:
yum install -y containerd.io
1.6 配置containerd [所有節點]
# 生成containerd的配置檔案
mkdir /etc/containerd -p
# 生成配置檔案
containerd config default > /etc/containerd/config.toml
# 編輯配置檔案
vim /etc/containerd/config.toml
將 sandbox_image = "k8s.gcr.io/pause:3.6"
改為:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"
systemctl enable containerd
systemctl start containerd
二:安裝k8s 1.26.x
2.1 配置 k8s 1.26 的yum 源
# 新增阿里雲YUM軟體源
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=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
yum makecache
2.2 安裝kubeadm,kubelet和kubectl
# 目前最新版本是1.26.0,我們直接上最新版
yum install -y kubectl kubelet kubeadm
# 設定kubelet為開機自啟動即可,由於沒有生成配置檔案,叢集初始化後自動啟動
systemctl enable kubelet
# 準備k8s 1.26.0 所需要的映象
kubeadm config images list --kubernetes-version=v1.26.0
2.3 叢集初始化
# 使用kubeadm init命令初始化
#在master0上執行,報錯請看k8s報錯彙總
echo 1 > /proc/sys/net/ipv4/ip_forward
kubeadm init --kubernetes-version=v1.26.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=192.168.19.128 --image-repository registry.aliyuncs.com/google_containers
# 註釋
# --apiserver-advertise-address 叢集通告地址(此處設定為 master0 地址)
# --image-repository 由於預設拉取映象地址k8s.gcr.io國內無法訪問,這裡指定阿里雲映象倉庫地址
# --kubernetes-version K8s版本,與上面安裝的一致
# --service-cidr 叢集內部虛擬網路,Pod統一訪問入口
# --pod-network-cidr Pod網路,,與下面部署的CNI網路元件yaml中保持一致
# 上面命令執行完後,會生成兩條提示,分別執行
# root 使用者,master0 上執行
export KUBECONFIG=/etc/kubernetes/admin.conf
# 其它節點加入叢集
kubeadm join 192.168.19.128:6443 --token pb1jpq.ogibtvmpk29l7pol \
--discovery-token-ca-cert-hash sha256:099131e6bfc2d69a9d68b3ee52e2d29bce0ad8b5193ffe2559d231c63713a04a
2.5 叢集部署網路外掛
# 網路元件有很多種,只需要部署其中一個即可,推薦Calico。
# Calico是一個純三層的資料中心網路方案,Calico支援廣泛的平臺,包括Kubernetes、OpenStack等。
# Calico 在每一個計算節點利用 Linux Kernel 實現了一個高效的虛擬路由器( vRouter) 來負責資料轉發,而每個 vRouter 透過 BGP # 協議負責把自己上執行的 workload 的路由資訊向整個 Calico 網路內傳播。
# 此外,Calico 專案還實現了 Kubernetes 網路策略,提供ACL功能。
# 下載Calico
wget http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/calico.yaml
kubectl apply -f calico.yaml
# 檢視節點:
kubectl get node
常用命令
# 查詢node
kubectl get nodes -o wide
# 查詢 pod
kubectl get pods -o wide (-A 查詢全部pod --namespace=‘default’ 預設查詢名稱空間為default的)
# 檢視pod詳情
kubectl describe pod <pod name>