【k8s集群应用】Kubernetes部署安装-二进制部署实例

Kubernetes 部署方式

常见的K8S安装部署方式

  1. Minikube
  2. Kubeadm
  3. 二进制安装部署
    • 用途:生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群。
    • 下载地址https://github.com/kubernetes/kubernetes/releases
    • 备注:虽然手动部署较麻烦,但期间可以学习很多工作原理,也利于后期维护。

总结

  • Minikube:适合本地学习和预览K8S特性。
  • Kubeadm:部署简单,适合快速搭建K8S集群,但管理难度较大,故障恢复速度较慢。
  • 二进制部署:部署复杂,但管理方便,集群伸展性能好,稳定性高,适合生产环境。

Kubeadm与二进制部署的区别

  1. 二进制部署
    • 部署难度:难
    • 管理方便性:方便
    • 集群伸展性能:好
    • 稳定性:集群规模到达一定规模(几百个节点、上万个Pod)时,二进制部署的稳定性高于kubeadm。
    • 故障恢复:宿主机起来后,进程也会自动起来,恢复速度快。
  2. Kubeadm部署
    • 部署难度:简单
    • 管理方便性:难
    • 部署方式:以容器管理容器的方式部署组件及服务。
    • 故障恢复:恢复速度比二进制慢,因为需要先启动宿主机,再启动进程,最后启动容器,集群才能恢复。

Kubernetes部署安装

环境配置

节点名称 IP地址 托管服务/组件
k8s集群master01 20.0.0.10 kube-apiserver, kube-controller-manager, kube-scheduler, etcd
k8s集群master02 20.0.0.66 (备用master)
k8s集群node01 20.0.0.58 kubelet, kube-proxy, docker, etcd
k8s集群node02 20.0.0.59 kubelet, kube-proxy, docker, etcd
etcd集群节点1 20.0.0.10 etcd
etcd集群节点2 20.0.0.58 etcd
etcd集群节点3 20.0.0.59 etcd

Kubernetes集群初始化配置(实验环境)

一、操作系统初始化配置

  1. 关闭防火墙

    • 停止并禁用firewalld服务。
    • 清除所有iptables规则。
    systemctl stop firewalld
    systemctl disable firewalld
    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    
  2. 关闭SELinux

    • 临时关闭SELinux。
    • 永久修改/etc/selinux/config文件,将SELinux设置为disabled
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    
  3. 关闭Swap

    • 临时关闭Swap。
    • 永久禁用Swap,修改/etc/fstab文件,注释掉Swap相关行。
    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    
  4. 设置主机名

    • 根据规划,使用hostnamectl命令设置各节点的主机名。
    hostnamectl set-hostname [主机名]
    
  5. 添加Hosts

    • master节点上,编辑/etc/hosts文件,添加集群内其他节点的IP和主机名映射。
    cat >> /etc/hosts << EOF
    20.0.0.10 master01
    20.0.0.58 node01
    20.0.0.59 node02
    EOF
    
  6. 调整内核参数

    • 创建/etc/sysctl.d/k8s.conf文件,添加必要的内核参数配置。
    • 应用配置。
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv4.ip_forward=1
    EOF
    sysctl --system
    
  7. 时间同步

    • 安装ntpdate工具。
    • 使用ntpdate同步时间。
    yum install ntpdate -y
    ntpdate time.windows.com
    

二、部署Docker引擎

  1. 安装依赖

    • 在所有node节点上,安装yum-utilsdevice-mapper-persistent-datalvm2
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  2. 添加Docker仓库

    • 使用yum-config-manager添加Docker的官方仓库。
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 安装Docker

    • 安装Docker CE、Docker CE CLI和containerd.io
    yum install -y docker-ce docker-ce-cli containerd.io
    
  4. 配置Docker

    • 创建/etc/docker目录。
    • /etc/docker/daemon.json文件中添加Docker的配置,包括镜像加速器、Cgroup Driver等。
    mkdir /etc/docker
    cat > /etc/docker/daemon.json <<EOF
    {
      "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com", "https://docker.m.daocloud.io", "https://docker.1panel.live"],
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "1g", "max-file": "3"
      }
    }
    EOF
    
  5. 启动并启用Docker服务

    • 启动Docker服务。
    • 设置Docker服务开机自启。
    systemctl start docker.service
    systemctl enable docker.service
    
  6. 验证Docker配置

    • 使用docker info命令检查Cgroup Driver是否配置正确。
    docker info | grep "Cgroup Driver"
    Cgroup Driver: systemd
    

------------------------------ 部署 etcd 集群 ------------------------------
etcd是一个分布式键值存储系统,用于在分布式系统中保存配置信息、元数据以及关键的共享状态。它是一个开源项目,最初由CoreOS开发并维护,现在由CNCF托管。etcd的设计目标是提供可靠的分布式存储,以支持分布式系统的一致性和高可用性。

关键特性

  • 分布式存储:etcd的数据存储是分布式的,可以跨多个节点进行分布,确保高可用性和可扩展性。
  • 强致性:etcd提供强一致性的保证,确保在集群中的所有节点都能看到相同的数据视图。
  • 轻量级:etcd采用轻量级的Raft一致性算法,以确保集群中的节点之间达成一致,同时保持相对较低的性能开销。
  • API支持:etcd提供简单而强大的HTTP+JSON API,使得开发人员可以轻松地与其进行交互,并集成到各种应用和工具中。
  • Watch机制:etcd支持Watch机制,允许客户端监视特定键的变化,并在数据发生变更时得到通知。
  • 安全性:etcd支持SSL/TLS加密,以保障数据在传输过程中的安全性,并提供基于角色的访问控制。

应用场景

  • 配置管理: etcd常用于存储应用程序和系统的配置信息,允许动态地更新配置而无需重启应用。
  • 服务发现: etcd可以用作服务发现的后端存储,帮助服务在动态环境中找到彼此。
  • 分布式锁: 通过etcd的分布式锁机制,可以实现分布式系统中的协同工作和资源同步。
  • 集群协调: etcd在构建分布式系统中,作为集群协调的关键组件,确保系统的一致性和稳定性。

总体而言,etcd在云原生应用和分布式系统中发挥着重要作用,提供了可靠的分布式存储和协调服务,为应用程序提供一致性、可靠性和高可用性的基础设施支持。

etcd 目前默认使用2379端口提供HTTP API服务, 2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。 即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯。
etcd 在生产环境中一般推荐集群方式部署。由于etcd 的leader选举机制,要求至少为3台或以上的奇数台。

---------- 准备签发证书环境 ----------
CFSSL 是 CloudFlare 公司开源的

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值