k3s安装部署详细解释,安装在centos7上
时间: 2025-06-07 19:10:33 浏览: 46
<think>嗯,用户之前问过关于编程开发笔记本的推荐,现在又问k3s在CentOS7上的安装部署,看来他可能是在搭建开发环境或者进行云原生相关的项目。我需要先确保回答准确且详细,符合他的实际需求。
首先,要明确k3s是什么,用户可能已经了解,但最好还是简要说明,比如轻量级Kubernetes,适合边缘计算和资源有限的环境。然后,安装前的准备工作很重要,比如CentOS7的系统要求,是否需要关闭防火墙、SELinux,配置yum源这些步骤。用户可能有Linux基础,但详细步骤能帮助他避免常见错误。
接下来,安装过程需要分步骤,包括使用官方脚本安装,可能涉及国内用户访问慢的问题,要提供换源的方法。安装后的验证,比如kubectl命令是否正确,节点状态是否正常。这部分需要命令示例和可能的输出,方便用户对照检查。
然后,网络插件的选择,比如默认的Flannel或者其他,用户可能需要不同的网络方案,给出配置方法。服务暴露的部分,比如Traefik安装和测试,用户可能想通过Ingress访问应用,这里需要具体操作步骤和验证命令。
持久化存储也是关键,特别是如果用户需要运行有状态应用,介绍Local Path Provisioner的配置和使用。高可用部署部分,用户可能在生产环境需要多节点集群,需要详细说明如何设置外部数据库和加入节点,这部分要确保步骤清晰,避免配置错误。
升级和卸载的步骤也不能少,用户可能需要维护集群,或者遇到问题需要重新安装。最后,常见问题排查,比如cgroup问题、端口占用、镜像拉取失败,这些都是实际安装中容易遇到的,给出解决方案能节省用户时间。
需要检查所有命令的正确性,比如systemctl命令、kubectl参数,确保在CentOS7上有效。另外,考虑用户可能的环境差异,比如网络配置、硬件资源,适当给出提示。保持回答结构清晰,分步骤讲解,代码块和命令用合适的格式,方便用户复制执行。同时,注意使用中文,避免专业术语过多,必要时解释术语,确保用户理解顺畅。</think>以下是CentOS 7系统部署k3s集群的详细技术指南,包含生产环境验证方案:
### 一、部署准备(系统调优公式)
1. **内核参数优化**:
```bash
# 配置系统参数(需root权限)
cat > /etc/sysctl.d/k3s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
fs.inotify.max_user_watches = 524288
EOF
sysctl -p /etc/sysctl.d/k3s.conf
```
2. **依赖组件安装**:
```bash
yum install -y container-selinux selinux-policy-base
rpm -i https://rpm.rancher.io/k3s/latest/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm
```
3. **防火墙规则配置**:
```bash
firewall-cmd --permanent --add-port=6443/tcp # Kubernetes API
firewall-cmd --permanent --add-port=8472/udp # Flannel VXLAN
firewall-cmd --permanent --add-port=10250/tcp # Kubelet metrics
firewall-cmd --reload
```
### 二、单节点部署(开发环境)
```bash
# 使用国内镜像源安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn \
INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config" \
sh -
# 验证安装结果(输出应有Ready状态)
kubectl get node -o wide
```
**输出示例**:
```
NAME STATUS ROLES AGE VERSION
centos7 Ready control-plane,master 97s v1.26.5+k3s1
```
### 三、多节点集群(生产环境)
1. **Server节点部署**:
```bash
# 第一个控制节点(初始化集群)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn \
K3S_TOKEN=SECRET_TOKEN \
sh -s - server --cluster-init
# 后续控制节点(需替换SERVER_IP)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
K3S_TOKEN=SECRET_TOKEN \
sh -s - server --server https://SERVER_IP:6443
```
2. **Worker节点加入**:
```bash
# 工作节点加入命令
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
K3S_URL=https://SERVER_IP:6443 \
K3S_TOKEN=SECRET_TOKEN \
sh -
```
### 四、网络配置方案
1. **Flannel后端选择**:
```bash
# 修改网络后端(默认vxlan)
cat > /etc/rancher/k3s/config.yaml << EOF
flannel-backend: host-gw
EOF
systemctl restart k3s
```
2. **自定义Calico部署**:
```bash
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 删除默认Flannel
kubectl delete -f /var/lib/rancher/k3s/server/manifests/k3s-flannel.yaml
```
### 五、持久化存储配置
1. **Local Path Provisioner**:
```bash
# 修改存储路径(默认/var/lib/rancher/k3s/storage)
kubectl edit deploy/local-path-provisioner -n local-path-storage
# 查找并修改环境变量:
# env:
# - name: PV_DIR
# value: "/mnt/data/k3s-storage"
```
2. **NFS存储示例**:
```yaml
# nfs-provisioner.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: nfs-provisioner
namespace: kube-system
spec:
chart: nfs-subdir-external-provisioner
repo: https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
set:
nfs.server: 192.168.1.100
nfs.path: /data/nfs_share
```
### 六、高可用架构验证
1. **ETCD集群健康检查**:
```bash
docker exec -it k3s etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt \
--cert=/var/lib/rancher/k3s/server/tls/etcd/server-client.crt \
--key=/var/lib/rancher/k3s/server/tls/etcd/server-client.key \
endpoint health
```
2. **负载均衡测试**:
```bash
# 使用siege进行API压力测试
siege -c 100 -t 2M http://LB_IP:6443/version
# 监控指标:
watch -n 1 "kubectl top nodes"
```
### 七、升级与维护
1. **滚动升级策略**:
```bash
# 升级所有节点(指定版本)
k3s-upgrade.sh --channel v1.27
# 验证升级进度
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kubeletVersion}{"\n"}{end}'
```
2. **灾难恢复方案**:
```bash
# 备份ETCD数据
k3s etcd-snapshot save --name pre-upgrade-backup
# 恢复快照
k3s server \
--cluster-init \
--etcd-restore /var/lib/rancher/k3s/server/db/snapshots/pre-upgrade-backup
```
### 常见问题排查矩阵
| 故障现象 | 检测命令 | 解决方案 |
|--------------------------|----------------------------------|-----------------------------------|
| Pod网络不通 | `kubectl exec -it <pod> ping 8.8.8.8` | 检查CNI插件配置和防火墙规则 |
| 节点NotReady | `journalctl -u k3s -n 100 -f` | 验证容器运行时状态和kubelet日志 |
| 镜像拉取失败 | `crictl pull <image>` | 配置镜像加速器或私有仓库认证 |
| API Server无响应 | `nc -zv <server-ip> 6443` | 检查负载均衡配置和证书有效期 |
**生产建议**:
部署完成后建议执行`k3s-check.sh`验证集群状态,重点关注:
- 证书有效期(应大于90天)
- ETCD存储空间使用率(应<80%)
- 控制平面组件内存占用(kube-apiserver应<500MB)
阅读全文
相关推荐



















