暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

k8s 安装(centos7.9+v1.28.2)

zhou 2024-03-28
1193

一. 环境准备

本地VM 3台 2C 4G

master节点需要的组件

  • docker
  • kubectl:集群命令行交互工具
  • kubeadm:集群初始化工具

node节点需要的组件

  • docker
  • kubelet:管理pod的容器,确保他们健康稳定的运行
  • Kube-proxy: 网络代理,负责网络相关工作

安装

vi /etc/resolv.conf

nameserver 8.8.8.8

主机名

分别配置机器名 master node1 node2

hostnamectl set-hostname master
或
vi /etc/hostname
master
复制
配置hosts文件
cat > /etc/hosts <<here
192.168.0.211 master
192.168.0.212 node1
192.168.0.213 node2
here
复制

ulimit

cat <<EOF>>/etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
* soft stack 32768
* hard stack 32768
EOF
复制

修改时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
复制
配置yum源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

sed -e "s|packages.cloud.google.com|mirrors.ustc.edu.cn/kubernetes|" \
    -e "s|gpgcheck=1|gpgcheck=0|" \
    -i /etc/yum.repos.d/kubernetes.repo
复制
升级内核
cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
uname -r
3.10.0-1160.el7.x86_64
#导入ElRepo仓库公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#Centos 7 安装 ELRepo
yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
#查看稳定镜像
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
升级到长期稳定
yum --enablerepo=elrepo-kernel install -y kernel-lt
查看当前系统已安装内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

编辑 /etc/default/grub 把GRUB_DEFAULT=saved修改为
GRUB_DEFAULT=0


重新配置内核参数
grub2-mkconfig -o /boot/grub2/grub.cfg
重启
reboot
最新版本
uname -r
复制

重启没生效的话再试试

grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
复制
关闭selinux
setenforce 0  
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
复制

验证selinux是否关闭成功

getenforce
复制
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
复制

iptables

# 关闭防火墙
systemctl stop iptables
systemctl disable iptables
复制

查看

systemctl status firewalld
复制
关闭swapoff
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
复制

配置L2网桥在转发包时会被iptables的FORWARD规则所过滤,CNI插件需要该配置

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

modprobe overlay
modprobe br_netfilter
复制
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF


# 执行命令使其修改生效
modprobe br_netfilter && sysctl -p /etc/sysctl.d/k8s.conf
复制

检查结果

lsmod | grep br_netfilter
lsmod | grep overlay

sysctl \
net.bridge.bridge-nf-call-iptables \
net.bridge.bridge-nf-call-ip6tables \
net.ipv4.ip_forward
复制
ntp同步
/usr/sbin/ntpdate -u ntp.tencent.com && /usr/sbin/hwclock -w #手动
#自动
cat <<EOF>>/var/spool/cron/root
00 12 * * * /usr/sbin/ntpdate -u ntp.tencent.com && /usr/sbin/hwclock -w
EOF
复制

安装containerd

安装containerd
# 配置docker-ce软件源
# 移除已经安装的docker版本
yum remove -y docker docker-common docker-selinux docker-engine
# 下载docker-ce软件源文件
curl -o /etc/yum.repos.d/docker-ce.repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 替换官方源地址为国内yum源地址。
sed -e 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' \
    -i.bak /etc/yum.repos.d/docker-ce.repo
# 安装docker-ce
yum makecache fast
# 安装containerd
yum install -y containerd
复制
配置containerd
# 备份默认配置文件
mv /etc/containerd/config.toml /etc/containerd/config.toml.default
# 重新生成配置文件
containerd config default > /etc/containerd/config.toml
sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml
复制
启动containerd
systemctl enable containerd
systemctl restart containerd
systemctl status containerd
复制

安装k8s组件

下载安装

cd /root
mkdir -pv k8s/calico
cd k8s/calico
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
sed -i "s|192.168|10.96|" custom-resources.yaml
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml
复制

查看

kubectl get pods -A
kubectl get nodes
复制
添加k8s安装源
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
复制

安装kubelet,kubeadm,kubectl

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

安装docker-ce

yum install -y kubelet kubeadm kubectl docker-ce
复制
准备容器镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
复制

拉取镜像

kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers
复制
用kubeadm来初始化集群(仅master节点执行)

先查看已安装版本

kubectl version
复制

Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

kubeadm init --kubernetes-version=1.28.2 \
--apiserver-advertise-address=192.168.0.211 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
复制

设置环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf
cat <<EOF | tee -a ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
source  ~/.bash_profile
# 复制控制配置,便于后继使用kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
cp /etc/kubernetes/admin.conf ~/.kube/config
复制

worker节点加入

获取加入taken

kubeadm token create --print-join-command
kubeadm token list
复制
kubeadm join 192.168.0.211:6443 --token iz1j56.02jn7kq3o9ktpgim --discovery-token-ca-cert-hash sha256:c21e2012c39fd1632ce69bb9ad761d3323b6866890c8e4dcd955861c64291e93
复制

设置worker环境变量

#master拷贝
scp /etc/kubernetes/admin.conf root@node1:/etc/kubernetes/
#worker执行
export KUBECONFIG=/etc/kubernetes/admin.conf
cat <<EOF | tee -a ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
source  ~/.bash_profile
# 复制控制配置,便于后继使用kubectl


mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
cp /etc/kubernetes/admin.conf ~/.kube/config
复制

kubectl get nodes #在worker节点上执行验证


20240328171746image.png
安装网络插件Calico

cd /root
mkdir -pv k8s/calico
cd k8s/calico
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
sed -i "s|192.168|10.244|" custom-resources.yaml
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml
复制

监控calico各pods运行状态

watch kubectl get pods -n calico-system
kubectl get pods -A
复制

查看token

kubeadm token create --print-join-command
复制

等待自动加入(VM比较慢,至少等了50分钟)


20240328210718image.png

启动kubelet、docker,并设置开机启动

systemctl enable kubelet
systemctl start kubelet

systemctl enable docker
systemctl start docker
复制

检查kubelet的状态(kubeadm 进行初始化成功,kubelet才能启动成功)

systemctl daemon-reload
systemctl status kubelet
复制

参考:

CentOS7使用kubeadm部署k8s-1.28集群-CSDN博客

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 一. 环境准备
    • master节点需要的组件
    • node节点需要的组件
    • 安装
      • 主机名
      • 配置hosts文件
      • 配置yum源
      • 升级内核
      • 关闭selinux
      • 关闭防火墙
      • 关闭swapoff
      • ntp同步
    • 安装containerd
      • 安装containerd
      • 配置containerd
      • 启动containerd
    • 安装k8s组件
      • 添加k8s安装源
      • 准备容器镜像
      • 用kubeadm来初始化集群(仅master节点执行)
      • 设置环境变量
      • worker节点加入
      • 启动kubelet、docker,并设置开机启动