kubernets (k8s) 1.28.2 - centos8 部署

1、将 SELinux 设置为 permissive 模式:

以下指令适用于 Kubernetes 1.28.2。

##关闭防火墙
systemctl stop firewalld
##禁止防火墙开机启动
systemctl disable firewalld
##永久关闭selinux 注:重启机器后,selinux配置才能永久生效
sed -i 's/enforcing/disabled/' /etc/selinux/config
##临时关闭selinux   执行getenforce   显示Disabled说明selinux已经关闭
setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

##永久关闭交换分区swap 注:重启机器后,才能永久生效
sed -ri 's/.*swap.*/#&/' /etc/fstab
##临时关闭交换分区swap
swapoff -a

安装ipset和ipvsadm

dummy0网卡和kube-ipvs0网卡:在安装k8s集群时,启用了ipvs的话,就会有这两个网卡。(将service的IP绑定在kube-ipvs0网卡上)

yum install  -y ipvsadm ipset sysstat conntrack libseccomp  
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip "
for kernel_module in \${ipvs_modules}; do
  /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
  if [ $? -eq 0 ]; then
    /sbin/modprobe \${kernel_module}
  fi
done
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules 
sh /etc/sysconfig/modules/ipvs.modules 
lsmod | grep ip_vs

2、容器进行时

说明: 自 1.24 版起,Dockershim 已从 Kubernetes 项目中移除。

转发 IPv4 并让 iptables 看到桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

下载安装containerd

github地址:https://github.com/containerd/containerd/blob/main/docs/getting-started.md

下载后解压:

tar -xzvf containerd-1.7.7-linux-amd64.tar.gz -C /usr/local
解压后可直接运行命令查看containerd版本:
containerd --version

配置containerd

mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i "s#registry.k8s.io/pause:3.8#registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9#g"  /etc/containerd/config.toml

配置镜像加速

vim /etc/containerd/config.toml
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://cekcu3pt.mirror.aliyuncs.com"]

配置cgroup

sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
等价于:
vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true

下载单元文件,使用systemd启动containerd

wget -P /etc/systemd/system https://raw.githubusercontent.com/containerd/containerd/main/containerd.service

systemctl daemon-reload
systemctl enable --now containerd

安装runc

去 https://github.com/opencontainers/runc/releases 下载libseccomp-2.5.4.tar.gz,如果之前yum安装libseccomp成功,则直接安装runc

install -m 755 runc.amd64 /usr/local/sbin/runc

运行runc命令不报错就没问题

3、添加 Kubernetes 的 yum 仓库。在仓库定义中的 exclude 参数确保了与 Kubernetes 相关的软件包在运行 yum update 时不会升级,因为升级 Kubernetes 需要遵循特定的过程。

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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

4、安装 kubelet、kubeadm 和 kubectl,并启用 kubelet 以确保它在启动时自动启动:

yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 --disableexcludes=kubernetes
systemctl enable --now kubelet

配置crictl:

cat  <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 5
image-endpoint: unix:///var/run/containerd/containerd.sock

EOF

镜像下载/导入

1.列出需要使用的镜像列表

kubeadm config images list

2.拉取镜像

kubeadm config images pull  \
--image-repository  registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version  v1.28.2

–image-repository: 从哪个地方下载镜像(默认"k8s.gcr.io",但k8s.gcr.io国内无法访问);
–kubernetes-version: 指定kubernetes集群的镜像版本;

3.初始化

执行ifconfig ,获取eth0的ip地址,例如:172.17.50.30

echo "172.17.50.30 a01" >> /etc/hosts

kubeadm init \
--apiserver-advertise-address=172.17.50.30 \
--control-plane-endpoint=a01 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.28.2  \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

执行结果中出现:

Your Kubernetes control-plane has initialized successfully!

按照 安装结果 的提示配置

安装网络插件- calico

文档地址 :https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
执行文档中的install中的第一个命令
然后获取命名空间

kubectl get ns

kubectl get pods -n tigera-operator

下载第二个命令中的yaml文件
将里面的cidr改成与kubeadm init时–pod-network-cidr参数一样的值
然后执行:

kubectl create -f custom-resources.yaml

kubectl get ns
kubectl get pods -n calico-system

至此,大功告成!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值