Kubernetes 1.8 单机部署全攻略:从零搭建到实践验证
2025.09.17 11:04浏览量:0简介:本文详细阐述Kubernetes 1.8版本在单机环境下的部署流程,涵盖环境准备、组件安装、配置优化及验证测试,为开发者提供一站式指南。
Kubernetes 1.8 单机部署全攻略:从零搭建到实践验证
摘要
Kubernetes作为容器编排领域的标杆,其单机部署模式适合开发测试、小型项目验证等场景。本文以Kubernetes 1.8版本为核心,系统梳理单机部署的全流程,包括环境预检、组件安装、配置调优及功能验证,同时针对常见问题提供解决方案,帮助开发者高效完成部署并快速上手。
一、单机部署的适用场景与优势
1.1 典型应用场景
- 开发测试环境:本地模拟集群行为,验证应用兼容性。
- 小型项目验证:资源受限下快速搭建轻量级K8s环境。
- 教学演示:通过单机环境直观展示K8s核心功能。
1.2 单机部署的核心优势
- 资源占用低:仅需单台服务器,降低硬件成本。
- 部署周期短:跳过多节点协调步骤,实现分钟级启动。
- 维护简单:无需处理网络分区、节点故障等复杂问题。
二、环境准备与依赖安装
2.1 操作系统与硬件要求
- 操作系统:推荐CentOS 7.x/Ubuntu 16.04+,内核版本≥4.4。
- 硬件配置:CPU≥2核,内存≥4GB,磁盘≥20GB(建议SSD)。
- 网络要求:关闭防火墙或开放6443(API Server)、10250(Kubelet)等关键端口。
2.2 依赖组件安装
2.2.1 Docker安装与配置
# CentOS示例
sudo yum install -y docker
sudo systemctl enable docker && sudo systemctl start docker
# 配置镜像加速(可选)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker
2.2.2 Kubeadm/Kubelet/Kubectl安装
# 添加K8s官方仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 安装指定版本(1.8.x)
sudo yum install -y kubelet-1.8.15 kubeadm-1.8.15 kubectl-1.8.15 --disableexcludes=kubernetes
sudo systemctl enable kubelet && sudo systemctl start kubelet
三、Kubernetes 1.8单机部署流程
3.1 初始化Master节点
# 使用kubeadm初始化(注意:--pod-network-cidr需与后续CNI插件匹配)
sudo kubeadm init --kubernetes-version=v1.8.15 --pod-network-cidr=10.244.0.0/16
# 初始化完成后,按提示配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.2 部署CNI网络插件(以Flannel为例)
# 下载Flannel YAML文件(需匹配初始化时指定的CIDR)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
# 验证Pod状态
kubectl get pods -n kube-system | grep flannel
3.3 允许Master节点运行Pod(可选)
# 默认Master节点不调度Pod,如需启用:
kubectl taint nodes --all node-role.kubernetes.io/master-
四、关键配置优化与验证
4.1 核心组件状态检查
# 检查节点状态
kubectl get nodes
# 预期输出:NAME STATUS ROLES AGE VERSION
# master Ready master 5m v1.8.15
# 检查系统Pod状态
kubectl get pods -n kube-system
# 核心Pod(apiserver、controller-manager、scheduler、etcd、kube-proxy、flannel)应均为Running
4.2 部署测试应用验证集群功能
# 创建Nginx Deployment
kubectl create deployment nginx --image=nginx:1.15
kubectl expose deployment nginx --port=80 --type=NodePort
# 获取访问端口
kubectl get svc nginx
# 输出示例:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# nginx NodePort 10.101.244.123 <none> 80:31234/TCP 1m
# 通过浏览器或curl访问:http://<master-ip>:31234
五、常见问题与解决方案
5.1 初始化失败处理
- 错误示例:
[preflight] Some fatal errors occurred: [ERROR Swap]: running with swap on is not supported
- 解决方案:
# 临时关闭Swap
sudo swapoff -a
# 永久关闭(编辑/etc/fstab,注释swap行)
5.2 网络插件部署失败
- 现象:Flannel Pod卡在ContainerCreating状态。
- 排查步骤:
- 检查CNI配置目录:
ls /etc/cni/net.d/
- 查看Flannel日志:
kubectl logs -n kube-system <flannel-pod-name>
- 确认宿主机路由表:
ip route
- 检查CNI配置目录:
5.3 资源不足导致Pod无法启动
- 优化建议:
- 调整Kubelet资源限制:编辑
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
,增加--eviction-hard=memory.available<500Mi
参数。 - 使用
--feature-gates=RotateKubeletServerCertificate=true
启用证书自动轮换。
- 调整Kubelet资源限制:编辑
六、升级与维护建议
6.1 版本升级路径
- 升级前准备:
# 备份etcd数据(如使用外部etcd)
ETCDCTL_API=3 etcdctl snapshot save snapshot.db --endpoints=<etcd-endpoints> --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key
- 升级步骤:
- 升级kubeadm:
yum install -y kubeadm-1.9.x
- 执行升级命令:
kubeadm upgrade plan
→kubeadm upgrade apply v1.9.x
- 升级kubelet/kubectl:
yum install -y kubelet-1.9.x kubectl-1.9.x
- 重启kubelet:
systemctl restart kubelet
- 升级kubeadm:
6.2 日常维护命令
# 查看集群事件
kubectl get events --sort-by='.metadata.creationTimestamp'
# 清理未使用的资源
kubectl delete pods --field-selector status.phase=Succeeded
docker system prune -af
结语
Kubernetes 1.8单机部署为开发者提供了轻量级的集群体验,通过本文的详细指导,读者可快速完成从环境搭建到功能验证的全流程。实际生产环境中,建议结合高可用方案(如Stacked etcd拓扑)进行部署,同时关注社区对CVE漏洞的修复情况(如1.8.x版本的CVE-2017-1002101)。随着K8s版本的迭代,单机部署模式仍将是开发测试场景的重要选择。
发表评论
登录后可评论,请前往 登录 或 注册