欢迎光临
我们一直在努力

k8s集群部署文档_jdk,mysql,kafka,flink,zookeeper

k8s集群部署文档

一. 内核升级配置 = 所有k8s节点都需要执行

1.1 配置 YUM 源(使用阿里云的源)

### 1. 清理旧的 repo 文件(解决重复仓库警告)
`
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/
`
``
> 这样会把所有以 `
CentOS-` 开头的 .repo 文件移走,避免重复。

——

### 2. 创建新的 CentOS 8 vault 仓库配置

由于 CentOS 8 已归档,需要将源指向阿里云的 `centos-vault` 镜像,并直接指定最后的发行版 `8.5.2111`

```
cat > /etc/yum.repos.d/CentOS-Vault.repo << \’EOF\’
[baseos]
name=CentOS-8.5.2111 – Base
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
gpgcheck=0
enabled=1

[appstream]
name=CentOS-8.5.2111 – AppStream
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/
gpgcheck=0
enabled=1

[extras]
name=CentOS-8.5.2111 – Extras
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
gpgcheck=0
enabled=1

[powertools]
name=CentOS-8.5.2111 – PowerTools
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/
gpgcheck=0
enabled=1
EOF
```

> 说明:
>
> – 直接使用 `8.5.2111` 这个具体版本号,避免 `$releasever` 变量被解析为 `8` 而找不到目录。
> – 暂时关闭 GPG 检查 (`
gpgcheck=0`),后续如需启用可以再加回。
> – 仓库 ID 已分别命名为 `
baseos``appstream``extras``powertools`,不会再重复。

——

### 3. 重建缓存并验证

bash

```
yum clean all; rm -rf /var/cache/yum/*; yum makecache; yum repolist
`

若一切正常,你会看到 4 个仓库被列出且无报错。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.2 升级内核

1.2.1 修复 CentOS 8 官方源(EOL 后必做)

sed -i \’s/mirrorlist/#mirrorlist/g\’ /etc/yum.repos.d/CentOS-*
sed -i \’s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g\’ /etc/yum.repos.d/CentOS-*

1.2.2 安装 ELRepo 仓库

rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

1.2.3 查看可用内核版本

yum –disablerepo=\”*\” –enablerepo=\”elrepo-kernel\” list available

1.2.4 安装新内核 注:我这里使用的kernel-lt

# 或安装长期支持版内核(如 5.4.x)
yum –enablerepo=elrepo-kernel install -y kernel-lt

1.2.5 设置新内核为默认启动项

# 方法一:使用 grubby 指定新内核
grubby –set-default /boot/vmlinuz-$(rpm -q –queryformat \”%{VERSION}-%{RELEASE}.%{ARCH}\” kernel-lt)

1.2.6 重启

reboot

1.2.7 验证内核版本

uname -r

二. 电脑基础配置 = 所有节点执行

2.1 配置hosts

cat >> /etc/hosts << \’EOF\’
192.168.1.201 k8s1
192.168.1.202 k8s2
192.168.1.203 k8s3
EOF

2.2 安装基础软件

yum install -y vim wget net-tools rsync openssh-clients telnet tree gcc gcc-c++ make unzip lrzsz curl lsof tcpdump chrony iproute-tc

# 配置时间同步
# 配置时间服务器
cat > /etc/chrony.conf << \’EOF\’
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server ntp.ntsc.ac.cn iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
EOF

# 启动并设置开机自启
systemctl enable chronyd –now

# 查看同步状态
chronyc sources -v
date

2.3 禁用 SELinux 和 Swap

# 临时禁用 SELinux
setenforce 0

# 永久禁用 SELinux
sed -i \’s/^SELINUX=enforcing$/SELINUX=disabled/\’ /etc/selinux/config

# 禁用 Swap
swapoff -a
sed -i \’/swap/d\’ /etc/fstab

# 验证
getenforce
free -m | grep Swap

2.4 配置内核参数

# 创建模块加载配置文件(确保重启后自动加载)
cat > /etc/modules-load.d/k8s.conf << EOF
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
vm.swappiness = 0
EOF

# 使内核参数生效
sysctl –system

# 验证模块已加载
lsmod | grep -E \’overlay|br_netfilter\’

# 验证参数
sysctl net.bridge.bridge-nf-call-iptables

# 配置防火墙开放 Kubernetes 端口(避免警告)=== 所有节点都需要开通
# Kubernetes 核心端口
firewall-cmd –permanent –add-port=6443/tcp # kube-apiserver
firewall-cmd –permanent –add-port=10250/tcp # kubelet
firewall-cmd –permanent –add-port=10251/tcp # kube-scheduler
firewall-cmd –permanent –add-port=10252/tcp # kube-controller-manager
firewall-cmd –permanent –add-port=10255/tcp # kubelet read-only
firewall-cmd –permanent –add-port=2379/tcp # etcd client
firewall-cmd –permanent –add-port=2380/tcp # etcd peer
firewall-cmd –permanent –add-port=8472/udp # Flannel VXLAN (如使用)
firewall-cmd –permanent –add-port=179/tcp # BGP (★★★ 关键!)
firewall-cmd –permanent –add-port=4789/udp # Calico VXLAN 备用
firewall-cmd –permanent –add-port=5473/tcp # Calico Typha

firewall-cmd –reload

2.5 配置 SSH 免密登录

注意更改主机名,这里说的是在k8s1上执行的

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N \”\”

# 免密登录本机(必须)
ssh-copy-id localhost

# 免密登录其他节点(按需替换主机名/IP)
ssh-copy-id root@k8s1
ssh-copy-id root@k8s2

# 验证
ssh k8s2 \”hostname\”
ssh k8s3 \”hostname\”

2.6 查询出所有的系统基本信息:

echo -e \”【内核】$(uname -a)\\n【CPU】$(lscpu | grep -E \”Model name|Socket|Core|Thread|CPU\\(s\\)\” | tr \’\\n\’ \’ \’)\\n【内存】$(free -h | awk \’NR==2\’)\\n【磁盘】$(df -h | awk \’NR==1||/^\\/dev/\’)\”

三. k8s集群部署

3.1 k8s前置软件安装

3.1.1 所有节点安装容器运行时(containerd)

# 安装 containerd 及其依赖
yum install -y yum-utils
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io
# 若发现上面这个方法执行报错: 下载元数据失败,请使用如下方法安装
# 手动下载安装文件
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.28-3.1.el7.x86_64.rpm
# 安装时禁用 docker-ce.repo 仓库
yum install -y /tools/soft/containerd.io-1.6.28-3.1.el7.x86_64.rpm –disablerepo=docker-ce-stable

# 生成默认配置
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# 修改 cgroup 驱动为 systemd(与 kubelet 保持一致)
sed -i \’s/SystemdCgroup = false/SystemdCgroup = true/\’ /etc/containerd/config.toml

# 配置镜像加速(阿里云)用于Containerd 镜像加速配置

# 目的:当 Kubernetes 从 docker.io(Docker Hub)、registry.k8s.io(K8s 官方仓库)拉取容器镜像时,自动使用阿里云等国内加速器,避免因网络问题导致拉取失败。

sed -i \’s|registry.k8s.io|registry.aliyuncs.com/google_containers|g\’ /etc/containerd/config.toml
sed -i \’/\\[plugins.\”io.containerd.grpc.v1.cri\”.registry.mirrors\\]/a\\\\ [plugins.\”io.containerd.grpc.v1.cri\”.registry.mirrors.\”docker.io\”]\\n endpoint = [\”https://registry.cn-hangzhou.aliyuncs.com\”,\”https://docker.mirrors.ustc.edu.cn\”]\’ /etc/containerd/config.toml

# 启动 containerd/成功显示如下内容
systemctl enable –now containerd

# [root@k8s3 soft]# systemctl enable –now containerd
# Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /usr/lib/systemd/system/containerd.service.

3.1.2 所有节点安装 kubeadm/kubelet/kubectl 1.28.2

# 配置 Kubernetes 阿里云 YUM 源
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=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

# 安装指定版本
yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 –disableexcludes=kubernetes

/*
如果相同配置但是某一台机器失败了可以用如下方法解决
# 移走 docker-ce.repo 到备份目录
mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/backup/

# 清理并重建 Yum 缓存(现在只剩您配置的阿里云基础源和 Kubernetes 源)
yum clean all
yum makecache

# 重新安装 kubelet/kubeadm/kubectl(应该不会再报错)
yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 –disableexcludes=kubernetes
*/

# 配置 kubelet 使用 systemd cgroup 驱动(避免与 containerd 冲突)
cat > /etc/sysconfig/kubelet << EOF
KUBELET_EXTRA_ARGS=\”–cgroup-driver=systemd\”
EOF

# 启用 kubelet(暂不启动,待初始化后自动启动)
systemctl enable kubelet

3.2 初始化集群(仅在 k8s1 执行)

# 预拉取所需镜像(可选,可加快 init)
kubeadm config images pull –kubernetes-version=v1.28.2 –image-repository=registry.aliyuncs.com/google_containers

# 初始化控制平面
kubeadm init \\
–kubernetes-version=v1.28.2 \\
–control-plane-endpoint=k8s1:6443 \\
–image-repository=registry.aliyuncs.com/google_containers \\
–service-cidr=10.96.0.0/16 \\
–pod-network-cidr=10.244.0.0/16 # 后续使用 flannel 或 calico

# 有如下提示就证明成功了
# kubeadm join k8s1:6443 –token 52euvr.9zjozkazw4nzoo0p \\
–discovery-token-ca-cert-hash sha256:9f12540f36afa9cf1aa7da529e5b1676e7c79ea69f7b9cbd2b2501eea03df85e

# 配置 kubectl(普通用户或 root)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 保存 join 命令(用于添加 worker 节点)
kubeadm token create –print-join-command > /root/join-command.sh

3.2.1 安装 CNI 网络插件(推荐 Calico,支持 NetworkPolicy)k8s1上执行

bash

# 在能访问外网并且安装了docker的机子上拉取如下镜像
docker pull –platform linux/amd64 docker.io/calico/cni:v3.27.4
docker pull –platform linux/amd64 docker.io/calico/kube-controllers:v3.27.4
docker pull –platform linux/amd64 docker.io/calico/node:v3.27.4
docker pull –platform linux/amd64 docker.io/calico/pod2daemon-flexvol:v3.27.4

# 将镜像进行打包
docker save -o calico-v3.27.4.tar docker.io/calico/cni:v3.27.4 docker.io/calico/kube-controllers:v3.27.4 docker.io/calico/node:v3.27.4 docker.io/calico/pod2daemon-flexvol:v3.27.4

# 分发到k8s所有节点
scp calico-v3.27.4.tar root@k8s1:/tools/soft/
scp calico-v3.27.4.tar root@k8s2:/tools/soft/
scp calico-v3.27.4.tar root@k8s3:/tools/soft/

# 所有节点执行如下命令(导入镜像到 containerd 的 k8s.io 命名空间)
ctr -n k8s.io images import /tools/soft/calico-v3.27.4.tar

sed -i \’s|# – name: CALICO_IPV4POOL_CIDR|- name: CALICO_IPV4POOL_CIDR|\’ calico.yaml
sed -i \’s|# value: \”192.168.0.0/16\”| value: \”10.244.0.0/16\”|\’ calico.yaml

kubectl apply -f calico.yaml

# 等待所有 calico pod 运行
kubectl -n kube-system get pods -w

# 提示如下情况就证明成功了
# [root@k8s1 soft]# kubectl -n kube-system get pods -w
# NAME READY STATUS RESTARTS AGE
# calico-kube-controllers-7bbcc5b6fb-ntmn8 1/1 Running 0 40s
# calico-node-v2tlq 1/1 Running 0 40s
# coredns-66f779496c-fqhwm 1/1 Running 0 28m
# coredns-66f779496c-jrzth 1/1 Running 0 28m
# etcd-k8s1 1/1 Running 0 28m
# kube-apiserver-k8s1 1/1 Running 0 28m
# kube-controller-manager-k8s1 1/1 Running 0 28m
# kube-proxy-lglzh 1/1 Running 0 28m
# kube-scheduler-k8s1 1/1 Running 0 28m

3.2.2 加入 Worker 节点(在 k8s2, k8s3 执行)

bash

kubeadm join k8s1:6443 –token 52euvr.9zjozkazw4nzoo0p \\
–discovery-token-ca-cert-hash sha256:9f12540f36afa9cf1aa7da529e5b1676e7c79ea69f7b9cbd2b2501eea03df85e

# 复制 k8s1 上生成的 join 命令(包含 token 和 hash),在各 worker 执行
# 示例:
kubeadm join k8s1:6443 –token 52euvr.9zjozkazw4nzoo0p –discovery-token-ca-cert-hash sha256:9f12540f36afa9cf1aa7da529e5b1676e7c79ea69f7b9cbd2b2501eea03df85e

3.2.3 验证集群基础组件状态

bash

# 查看节点状态(应全部 Ready)
kubectl get nodes
# [root@k8s1 soft]# kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# k8s1 Ready control-plane 4h11m v1.28.2
# k8s2 Ready <none> 3h39m v1.28.2
# k8s3 Ready <none> 3h37m v1.28.2

# 查看核心 Pods(kube-system 命名空间)
kubectl get pods -n kube-system

# 输出示例(文字示意):
# NAME READY STATUS RESTARTS AGE
# calico-kube-controllers-xxxx 1/1 Running 0 2m
# calico-node-xxxx 1/1 Running 0 2m
# coredns-xxxx 1/1 Running 0 5

赞(0)
未经允许不得转载:171主机测评 » k8s集群部署文档_jdk,mysql,kafka,flink,zookeeper
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址