我试验的是1主2从结构,centos 2c2g 就足够。
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 源
1.添加阿里云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功能。
1.下载Calico
wget http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/calico.yaml
kubectl apply -f calico.yaml
查看节点:
kubectl get node