avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 k8s集群搭建
文章

k8s集群搭建

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
14~19 分钟 阅读

▶ 环境初始化

1.检查操作系统的版本


cat /etc/redhat-release
yum update

2.配置主机名解析hosts

3.时间同步

k8s要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。


systemctl enable --now chronyd
date

4.禁用iptables和firewalld服务

k8s和docker在运行中会产生大量的iptables规则,为了不让系统规则跟他们混淆,直接关闭系统的规则

5.禁用selinux


vim /etc/selinux/config 修改SELINUX的值为disabled
setenforce 0
getenforce

6.禁用swap分区


vim /etc/fstab 注释掉swap分区一行

free -h查看是否关闭

7.修改Linux的内核参数

▪ 添加网桥过滤和地址转发功能


vim /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

▪ 加载网桥过滤模块(临时生效,永久生效需要编辑配置文件)

modprobe br_netfilter

▪ 重新加载配置

sysctl -p /etc/sysctl.d/kubernetes.conf

▪ 查看网桥过滤模块是否加载成功

lsmod | grep br_netfilter

▪ 永久生效


tee /etc/sysconfig/modules/br_netfilter.modules <<EOF
modprobe br_netfilter
EOF
chmod +x /etc/sysconfig/modules/br_netfilter.modules
tee /etc/rc.sysinit <<EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
EOF
lsmod | grep br_netfilter

8.配置ipvs功能

安装ipset和ipvsadm


yum install ipset ipvsadm -y

添加需要加载的模块写入脚本文件


cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
EOF

为脚本文件添加执行权限


chmod +x /etc/sysconfig/modules/ipvs.modules

执行脚本文件

/bin/bash /etc/sysconfig/modules/ipvs.modules

查看对应的模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

修改k8s配置,把mode修改为ipvs


kubectl -n kube-system edit cm kube-proxy

查看并删除kube-system,删除的它会自动重启,需要等到集群安装了,才可以修改


kubectl -n kube-system get pod
kubectl -n kube-system rollout restart daemonset kube-proxy

▶ 安装docker

1.安装指定版本


wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install --setopt=obsoletes=0 docker-ce-24.0.9-1.el7 -y

2.配置daemon.json


cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":[
"https://docker.1ms.run",
"https://docker.m.daocloud.io"
]
}
EOF

3.安装cri-docker插件


yum install -y ~/cri-dockerd-0.3.1-3.el7.x86_64.rpm
systemctl daemon-reload
systemctl status docker
systemctl enable --now docker
systemctl enable --now cri-docker.service
systemctl status cri-docker.service

▶ 安装kubernetes组件

1.配置国内镜像源

编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

重新生成缓存:yum makecache

2.安装kubeadm、kubelet和kubectl


yum install --setopt=obsoletes=0 kubeadm-1.28.2-0 kubelet-1.28.2-0 kubectl-1.28.2-0 -y

三个节点 都需要安装

3.配置kubelet的cgroup

编辑/etc/sysconfig/kubelet,添加下面的配置

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"

KUBE_PROXY_MODE="ipvs"

4.设置kubelet开机自启


systemctl enable --now kubelet

▶ 准备集群镜像

1.通过下面的命令查看集群需要的镜像

kubeadm config images list

2.下载镜像

download-image.sh脚本文件:

#!/bin/bash

images=(

kube-apiserver:v1.28.2

kube-controller-manager:v1.28.2

kube-scheduler:v1.28.2

kube-proxy:v1.28.2

pause:3.9

pause:3.6

etcd:3.5.9-0

coredns:v1.10.1

)

for imageName in ${images[@]} ; do


docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName registry.k8s.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
docker tag registry.k8s.io/coredns:v1.10.1 registry.k8s.io/coredns/coredns:v1.10.1

▶ 集群初始化(只需要在master节点上执行)

1.创建集群

kubeadm_init.sh脚本:

#!/bin/bash

kubeadm init \

--kubernetes-version=v1.28.2 \

--pod-network-cidr=10.244.0.0/16 \

--service-cidr=10.96.0.0/12 \

--v=5 \

--cri-socket unix:///var/run/cri-dockerd.sock

若初始化出错,需要重新初始化,需要删除之前历史记录:

kubeadm reset --v=5 --cri-socket unix:///var/run/cri-dockerd.sock

提示信息输入Y

ipvsadm --clean


rm -rf $HOME/.kube

2.创建必要文件


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

3.其他子节点加入集群

▪ 查看加入工作节点命令:

kubeadm token create --print-join-command

▪ 若其他master节点加入,还需要获取证书:

kubeadm init phase upload-certs --upload-certs --v=999

▪ 完整加入节点命令:

kubeadm join 172.23.4.48:6443 \ --token abcdef.1234567890abcdef \

--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxx\

--v=5 --cri-socket unix:///var/run/cri-dockerd.sock

4.查看nodes状态


kubectl get nodes

显示STATUS应该为NOTReady,需要装网络插件

▶ 安装网络插件

1.配置文件kube-flannel.yml

第二节: 集群搭建 - WOLITA最下面有yaml文件


kubectl -n kube-flannel get pods -o wide #查看网络插件pod状态

2.查看集群节点的状态


kubectl get pods -A -o wide

▶ 服务部署

1.部署nginx


kubectl create deployment nginx --image=nginx:1.14-alpine

2.暴露端口


kubectl expose deployment nginx --port=80 --type=NodePort

3.查看服务状态


kubectl get pods,service

4.浏览器访问部署的nginx服务

▶ 辅助配置

• 配置tab命令补全

1.安装补全依赖包:


yum install -y bash-completion

2.配置永久生效:


echo "source /etc/profile.d/bash_completion.sh" >> ~/.bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

• 配置yaml文件使用tab转换空格


vim ~/.vimrc
autocmd FileType yaml setlocal ts=2 sw=2 ai et
容器与云原生
笔记 Kubernetes
许可协议:  CC BY 4.0
分享

相关文章

10月 17, 2026

Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)

架构一句话:3 台阿里云 ECS,2 台跑 kube-apiserver + etcd 堆叠控制平面,同时在这 2 台上混部 Haproxy + Keepalived 提供 VIP 172.26.127.62:6443;第 3 台做 Worker。所有 kubelet / kubectl 一律连 V

10月 11, 2026

使用Docker方式部署Harbor镜像仓库

1.下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.13.1/harbor-offline-installer-v2.13.1.tgz 2.解压到/opt目录下 tar xvzf harbor-offli

10月 11, 2026

kubernetes概念

▶ k8s简介以及主要功能(优势) • k8s简介 k8s的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化。 • 主要功能 ▪ 自我修复:RS deployment 一旦某一个容器崩溃,能够在1秒左右迅速启动新的容器 ▪ 弹性伸缩:

下一篇

kubernetes概念

上一篇

k8s资源管理

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy