centos7部署k8s1.26.0集群(kubeadmin基于docker部署)

1.配置服务器基础环境(所有节点)

#关闭防火墙
systemctl disable firewalld --now

#关闭selinux
sed -i 's/enforecing/disabled/' /etc/selinux/config  #永久关闭
setenforce 0  #临时关闭

#关闭swap
swapoff -a #临时
sed -ri 's/.*swap.*/#&/' /etc/fastab  #永久

#设置主机名
hostmamectl set-hostname <hostname>

#在master节点添加hosts
cat >> /etc/hosts << EOF
192.168.1.3   k8s-master
192.168.1.4   k8s-node1
192.168.1.5   k8s-node2
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

sysctl --system #生效
如果报错如下:
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
先执行命令modprobe br_netfilter后在执行sysctl --system命令

#时间同步
yum install ntpdate -y
ntpdate time.windows.com

2.安装docker(所有节点)

#所有节点安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo  #下载docker源

yum clean all && yum makecache #刷新yum缓存

#查看当前的yum仓库是否有docker-ce的软件包
yum list docker-ce --showduplicates | sort -r

yum install -y docker-ce #安装最新版

yum -y install docker-ce-24.0.6-1.el7 docker-ce-cli-24.0.6-1.el7 containerd.io docker-buildx-plugin docker-compose-plugin  #安装指定版本

#配置加速镜像加速服务
cat > /etc/docker/daemon.json << EOF
{
    "registry-mirrors": [
       "https://docker.m.daocloud.io",
       "https://huecker.io",
       "https://docker-cf.registry.cyou",
       "https://dockerhub.timeweb.cloud",
       "https://docker.mirrors.ustc.edu.cn"
   ],
        "data-root": "/data/docker",  
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
           "max-size": "100M"
    }
} EOF

#开启linux内核流量转发
cat > /etc/sysctl.d/docker.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF

#加载配置文件
sysctl -p /etc/sysctl.d/docker.conf
如果报错如下:
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
先执行命令modprobe br_netfilter在加载

systemctl enable docker --now  #启动docker
docker info  #查看docker信息

#安装cri-dockerd
Kubernetes v1.24及以上移除docker-shim的支持,而docker Engine 默认又不支持CRI(容器运行时接口)标准,因此二者默认无法再直接集成使用。
为此,Mirantis和docker联合创建了cri-dockerd项目,用于为docker Engine 提供一个能够支持到cri规范的桥梁,从而能够让Docker作为Kubernetes的容器引擎。

#下载cri-dockerd源
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.15/cri-dockerd-0.3.15-3.fc35.x86_64.rpm
#安装
rpm -ivh cri-dockerd-0.3.15-3.fc35.x86_64.rpm
#修改依赖镜像为阿里云地址并启动
vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker

3.安装k8s源(所有节点)

#添加阿里云k8s源
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

#安装kubeadmin kubelet kubectl
由于k8s版本更新频繁,这里指定版本号为1.26.0
yum install -y kubeadmin-1.26.0 kubelet-1.26.0 kubectl-1.26.0
systemctl enable kubelet #这里不启动,kubeadmin初始化集群时会自动拉起该服务

4.初始化集群

#部署k8s master节点
在192.168.1.3 (Master)上执行以下命令:
kubeadm init \
-apiserver-advertise-address=192.168.1.3 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.26.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=a11

#参数解释
-apiserver-advertise-address 集群通告地址
-image-repository 由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s 版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod 统一访问入口
--pod-network-cidr Pod 网络,与下面部署的CNI网络组件 yaml中保持一致,网络组件的默认的网段,如果要自定义需要去修改对应的网络组件的yaml文件
--cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用--cri-socket-unix:///run/containerd/containerd.sock
--ignore-preflight-errors 忽略不是严重影响的错误

初始化完成后,最后会输出一个 join 加入集群命令,先记住,下面用。
命令类似于kubeadmin join 192.168.1.3:6443 --token .....(后面的不写了)
拷贝 kubect1需要使用的连接到k8s的认证文件到默认路径:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.node节点加入集群

#加入 Kubernetes Node
在192.168.1.4/5(Node) 执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令并手动加上--cri-
socket=unix:///var/run/cri-dockerd.sock指定容器运行时
kubeadm join 192.168.1.3:6443 --token 7gqt13.kncw9hg5085iwclx
-discovery-token-ca-cert-hash
sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01 --cri-
socket=unix:///var/run/cri-dockerd.sock

6.部署cni网络

#部署容器网络(CNI)
Calico 是一个纯三层的数据中心网络方案,是目前 Kubernetes 主流的网络方案。
下载 YAML:
wget https://docs.projectcalico.org/manifests/calico.yaml
下载完后还需要修改里面定义Pod 网络 (字段CALICO_IPV4POOL_CIDR,修改它下面的value:"10.244.0.0/16"),如果是注释掉的取消注释即可,与前面 kubeadm init 的--pod-network-cidr 指定的网段一样即可。
修改完后文件后,部署:
kubectl apply -f calico.yaml
kubectl get pods -n kube-system
等 Calico Pod 都Running,节点也会准备就绪,然后开始k8s之路吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值