Kubernetes(K8s)安装部署指南

一、环境准备

1. 配置软件仓库

# 同步Docker和K8s软件包到本地仓库
rsync -av docker/ 192.168.88.240:/var/ftp/rpms/docker/
rsync -av kubernetes/packages/ 192.168.88.240:/var/ftp/rpms/k8s/

# 更新仓库元数据(在仓库服务器执行)
ssh 192.168.88.240
createrepo --update /var/ftp/rpms/

2. 系统基础配置

# 所有节点配置yum源
cat > /etc/yum.repos.d/k8s.repo <<EOF
[k8s]
name=Rocky Linux \$releasever - Kubernetes
baseurl="ftp://192.168.88.240/rpms"
enabled=1
gpgcheck=0
EOF

# 禁用防火墙和Swap
sed -i '/swap/d' /etc/fstab
swapoff -a
dnf remove -y firewalld-*

二、主控节点(Master)安装

1. 安装基础软件

# 配置主机解析
cat >> /etc/hosts <<EOF
192.168.88.240  harbor
192.168.88.50   master
192.168.88.51   node-0001
192.168.88.52   node-0002
192.168.88.53   node-0003
EOF

# 安装核心组件
dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc

2. 配置容器运行时(containerd)

# 生成默认配置并修改关键参数
containerd config default > /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#harbor:443/k8s/pause#g' /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 添加镜像仓库配置
cat >> /etc/containerd/config.toml <<EOF
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
  endpoint = ["https://192.168.88.240:443"]
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls]
  insecure_skip_verify = true
EOF

systemctl enable --now containerd kubelet

三、集群初始化

1. 内核参数优化

# 加载内核模块
echo -e "br_netfilter\nxt_conntrack" > /etc/modules-load.d/containerd.conf
systemctl start systemd-modules-load

# 设置网络参数
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.netfilter.nf_conntrack_max = 1000000
EOF
sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf

2. 初始化Master节点

# init.yaml配置文件关键参数
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.88.50 # 主节点IP
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.29.2
controlPlaneEndpoint: "master:6443"
imageRepository: "harbor:443/k8s"
# 执行初始化(先测试后正式)
kubeadm init --config=init.yaml --dry-run 2>error.log
kubeadm init --config=init.yaml | tee init.log

# 配置kubectl权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

四、网络插件部署(Calico)

1. 镜像准备

# 加载并推送Calico镜像
docker load -i calico.tar.xz
docker tag calico/cni:v3.26.4 harbor:443/plugins/cni:v3.26.4
docker push harbor:443/plugins/cni:v3.26.4

2. 应用网络配置

# 修改Calico镜像路径
sed -ri 's,docker.io/calico/,harbor:443/plugins/,g' calico.yaml

# 部署网络插件
kubectl apply -f calico.yaml

五、工作节点加入集群

1. 生成加入命令

# 创建永久Token(在Master执行)
kubeadm token create --ttl=0 --print-join-command

# 手动获取CA证书哈希(备用)
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der | openssl dgst -sha256 -hex

2. 节点加入操作

# 在工作节点执行加入命令(示例)
kubeadm join 192.168.88.50:6443 \
  --token <your-token> \
  --discovery-token-ca-cert-hash sha256:<your-hash>

六、验证集群状态

# 查看节点状态
kubectl get nodes -o wide

# 检查核心Pod运行状态
kubectl get pods -n kube-system

# 查看集群组件健康状态
kubectl get componentstatuses

注意事项

  1. 版本一致性:所有节点kubeadm/kubelet/kubectl版本必须严格一致
  2. 网络要求:确保节点间6443/10250端口互通,Calico默认使用BGP协议需放行TCP 179端口
  3. 镜像安全:私有仓库需配置TLS证书,生产环境建议使用Harbor等安全仓库
  4. 资源预留:Master节点建议至少2核4GB内存,生产环境启用高可用架构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值