Skip to content

decker502/k8s-operator

Repository files navigation

目标

目前主流的发布系统,大都有隐含的依赖项,部署系统前要安装这些依赖,但国内众所周知的原因,发布系统本身的自动部署逻辑无法直接运行,使部署难度增加,同时还可能使生产环境系统不够纯净,而且操作系统升级时,还需要考虑依赖项的兼容问题。

特性:

  • 基于原生操作系统的环境,即可一键发布
  • 极其轻量的启动
  • 生产环境高可用
  • 支持多环境配置
  • 尽量少的依赖项,包括发布机和目标机
  • 发布后自动检查集群健康
  • 必要的运维命令(扩容、删除节点、升级)
  • 支持私有Registry
  • 离线安装

依赖

发布机

  • Linux bash
  • Openssl
  • SSH
  • Rsync

目标机

  • Linux bash
  • SSH
  • Systemd
  • Docker

系统版本

coreos 1745.5.0 测试通过

强烈推荐在 coreos 安装,省时省力、坑少、Docker原生态

ETCD和Kubernetes 下列版本测试通过 

ETCD 3.3.10

kubernetes 1.10.x 1.11.x 1.12.x

环境配置

  • 发布机到目标机配置 ssh 无密码登录

  • 准备 ETCD 集群

    可参见 etcd-operator 项目

  • env目录下配置环境相应变量,例如开发环境 dev.sh:

    下列4个参数必须配置

    # Master 节点地址列表
    MASTERS
    
    # Worker节点地址列表
    NODES
    
    # ETCD集群连接地址
    ETCD_SERVERS
    
    # ETCD 集群证书路径
    LOCAL_ETCD_CERT_DIR
    
    #!/usr/bin/env bash
    
    export MASTERS=("10.200.0.15 10.200.0.14 10.200.0.13")
    export NODES=("10.200.0.12 10.200.0.11 10.200.0.10")
    export ETCD_SERVERS="https://10.200.0.15:2379,https://10.200.0.14:2379,https://10.200.0.13:2379"
    export LOCAL_ETCD_CERT_DIR="${ENV_ROOT}/../etcd/cert/dev"

    可配置的变量参见 config-default.sh 中的定义

  • 准备 二进制文件,置于 binaries目录下

    kube-apiserver 
    kube-controller-manager 
    kube-scheduler 
    kubelet 
    kube-proxy 
    kubectl
    
  • 准备必要的Docker镜像(墙后才需要)

    pause-amd64
    
    calico-node
    calico-cni
    calico-kube-controllers
    
    coredns
    

    在配置文件中配置好对应的变量 

    POD_INFRA_CONTAINER_IMAGE
    COREDNS_IMAGE
    CALICO_NODE_IMAGE
    CALICO_CNI_IMAGE
    CALICO_POLICY_IMAGE
    

网络组件

默认安装 Calico

创建/启动集群

# env 为变量
bash kube-up.sh ${env}

例如:

bash kube-up.sh dev

集群扩容

设置变量 SCALE_NODES

export SCALE_NODES=("10.200.0.11 10.200.0.12")

# env 为变量
bash kube-scale.sh ${env}

例如:

bash kube-scale.sh dev

删除节点

设置变量 REMOVE_NODES

export REMOVE_NODES=("10.200.0.11 10.200.0.12")

# env 为变量
bash remove-node.sh ${env}

例如:

bash remove-node dev

升级Worker节点

确保binaries 中文件为准备升级的版本

设置变量 REMOVE_NODES 和 SCALE_NODES

export REMOVE_NODES=("10.200.0.11 10.200.0.12")
export SCALE_NODES=("10.200.0.11 10.200.0.12")

# env 为变量
bash remove-node.sh ${env}
bash kube-scale.sh ${env}

例如:

bash remove-node dev
bash kube-scale.sh dev

销毁集群

注意:此操作将清除集群所有数据,仅用于开发测试,请谨慎使用

bash kube-down.sh ${env}

调试模式

bash -x kube-up.sh dev

DNS组件

集群安装后,需要安装 CoreDNS,以支持 DNS 解析

# env 为变量
bash deploy-addons.sh ${env}

参考项目

kubernetes

kubespray

License

Code is distributed under MIT license, feel free to use it in your proprietary projects as well.

About

轻量但实用的Kubernetes集群运维工具

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published