Kubernetes(v1.21.10)集群安装
发布日期:2025-04-03 18:42:57 浏览次数:12 分类:精选文章

本文共 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 提供三种主要的安装方式:

  • minikube:适合快速测试,部署在一个节点上。
  • kubeadm:适合生产环境和快速部署,支持多节点集群创建。
  • 二进制包安装:适合对镜像仓库访问限制较高的情况。
  • 本次采用 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
    1. 配置主机名和 hostname
    2. 设定主机名,并修改 hostname:

      # Centos7.5及以上版本hostnamectl set-hostname k8s-master

      # Centos7.9及以上版本hostnamectl set-hostname k8s-master
      1. 网络和防火墙配置
      2. 确保网络接口配置正确,并启用必要的防火墙规则:

        # 配置网络相关参数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]

        如遇到问题,请根据日志和错误提示逐步排查,确保所有组件正常运行。

    上一篇:Kubernetes:容器编排的强力
    下一篇:kubernetes(v1.21.10)简介

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月17日 02时29分25秒