
本文共 4775 字,大约阅读时间需要 15 分钟。
Kubernetes 安装详细教程
Kubernetes 是一个容器编排平台,支持多种集群部署方式。本文将介绍基于 kubeadm 的 Kubernetes 集群安装流程。
1. 环境规划
在部署 Kubernetes 集群之前,需要进行环境规划。
集群类型选择
Kubernetes 集群分为两类:一主多从和多主多从。
- 一主多从集群:适合测试环境,部署简单,但由于单点故障风险不适合生产环境。
- 多主多从集群:适合生产环境,部署复杂性较高,安全性更高。
将采用一主两从集群结构。
主机角色划分
角色 | IP地址 | 操作系统 | 配置 | 主机名 |
---|---|---|---|---|
主节点(Master) | 192.168.187.105 | CentOS 7.9 | 2核CPU、4G内存、50G硬盘 | k8s-master |
从节点(Node1) | 192.168.187.106 | CentOS 7.9 | 2核CPU、4G内存、50G硬盘 | k8s-node1 |
从节点(Node2) | 192.168.187.107 | CentOS 7.9 | 2核CPU、4G内存、50G硬盘 | k8s-node2 |
2. 安装方式选择
Kubernetes 提供三种主要的安装方式:
本次采用 kubeadm 工具进行安装。
3. 安装前准备
在安装之前,需要对环境进行充分准备。
系统版本检查
确保系统版本符合要求:
[root@master ~] cat /etc/redhat-releaseCentOS Linux 7.5.1804 (Core)
检查内核版本:
[root@k8s-master ~] uname -srLinux 3.10.0-1160.el7.x86_64
默认内核版本较低,需升级到 5.4 或更高版本。
时间同步
所有节点时间需同步,执行以下命令同步时间:
yum install -y ntpdatentpdate time.windows.com
防火墙配置
关闭防火墙和 iptables:
# 关闭 firewalld 服务systemctl stop firewalldsystemctl disable firewalld# 关闭 iptablessystemctl stop iptablessystemctl disable iptables
如果是云服务器,需确保私有网络互通并设置安全组规则。
主机名解析
配置主机名解析,建议使用内部 DNS 服务器:
cat > /etc/hosts << EOF127.0.0.1 localhost192.168.187.105 k8s-master192.168.187.106 k8s-node1192.168.187.107 k8s-node2EOF
4. 安装流程
开始正式安装过程。
安装 elrepo 仓库并升级内核:
# 更新 yum 源并安装内核yum -y updaterpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmyum list available --disablerepo=* --enablerepo=elrepo-kernelyum -y --enablerepo=elrepo-kernel install kernel-lt
重新制作内核配置并重启系统:
grub2-mkconfig -o /boot/grub2/grub.cfgreboot
确认内核版本:
[root@k8s-master ~] uname -srLinux 5.4.237-1.el7.elrepo.x86_64
- 配置主机名和 hostname
- 网络和防火墙配置
设定主机名,并修改 hostname:
# Centos7.5及以上版本hostnamectl set-hostname k8s-master
或
# Centos7.9及以上版本hostnamectl set-hostname k8s-master
确保网络接口配置正确,并启用必要的防火墙规则:
# 配置网络相关参数sysctl -pmodprobe br_netfiltersysctl net.ipv4.ip_forward=1sysctl net.bridge.bridge-nf-call-iptables=1sysctl net.bridge.bridge-nf-call-ip6tables=1
启用 IPVS 模块并加载:
yum -y install ipset ipvsadmcat > /etc/sysconfig/modules/ipvs.modules << EOFipvsEOFchmod 755 /etc/sysconfig/modules/ipvs.modulesbash /etc/sysconfig/modules/ipvs.functions
5. 安装 Docker 和容器运行环境
安装 Docker 并镜像加速:
# 卸载旧版本 Dockeryum remove docker docker-client docker-common# 初始化插件包yum -y install yum-utils device-mapper-persistent-data lvm2# 添加 Docker 仓库yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装 Dockeryum -y install docker-ce docker-ce-cli containerd.io
启动 Docker 服务并配置镜像加速:
systemctl start dockersystemctl enable dockersudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json << EOF{ "registry-mirrors": ["https://镜像仓库地址"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
6. 安装 Kubernetes 组件
安装 kubeadm、kubelet 和 kubectl:
# YAML 格式:badges: []---java: false---frontEndUrl: ''kubernetesVersion: v1.21.10lastUpdate: 2024-03-15pattern: ''nodeCount: 1nodes: - role: control-plane hostname: k8s-master lovelaceVersion: 1.10.3 - role: worker hostname: k8s-node1 lovelaceVersion: 1.10.3 - role: worker hostname: k8s-node2 lovelaceVersion: 1.10.3spec: {}tags: []title: clusterversion: 1.21.10# 命令执行:yum install -y kubelet-1.21.10 kubeadm-1.21.10 kubectl-1.21.10systemctl enable --now kubelet
7. 版本对应关系
根据文档,Docker v20.10 对应 Kubernetes v1.21.10。
8. 集群初始化
使用 kubeadm 初始化 master 节点:
kubeadm init --apiserver-advertise-address=192.168.187.105 \--control-plane-endpoint=k8s-master \--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \--kubernetes-version=v1.21.10 \--service-cidr=10.96.0.0/16 \--pod-network-cidr=192.168.0.0/16
9. 加入节点
在从节点上执行以下命令加入集群:
kubeadm join k8s-master:6443 --token=*.token* \--discovery-token-ca-cert-hash=sha256:*token_hash*
10. 安装网络插件
选择 Calico 网络插件进行部署:
curl https://projectcalico.docs.tigera.io/v3.19/manifests/calico.yaml -o calico.yamlkubectl apply -f calico.yaml
确保 pod 网络 CIDR 与集群网络 CIDR 一致,修改 calico.yaml 文件中的 CIDR 范围。
11. 验证节点状态
检查节点状态:
kubectl get nodes
此时节点状态应为 Ready。
12. 设置 kube-proxy 模式
启用 IPVS 模式:
kubectl edit cm kube-proxy -n kube-system
修改配置,设置 mode 为 "ipvs"。
13. 部署 Nginx
部署 Nginx 网站:
kubectl create deployment nginx --image=nginx:1.14-alpinekubectl expose deployment nginx --port=80 --type=NodePort
查看部署状态:
kubectl get pods,svc
14. 部署 Kubernetes 视觉化界面
部署 Kubernetes Dashboard:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yamlkubectl apply -f recommended.yaml
设置访问端口:[kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard]修改 ClusterIP 为 NodePort,并添加固定端口。
15. 使用令牌访问
创建访问令牌并获取:[kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | awk '{print $1}')]
16. 验证部署结果
确保所有服务和 pod 状态正常:[kubectl get pods,svc]
如遇到问题,请根据日志和错误提示逐步排查,确保所有组件正常运行。
发表评论
最新留言
关于作者
