kubeasz工具
kubeasz工具:
ezdown命令
用于初始化kubeasz工具,下载二进制文件、镜像等
-C #停止并清理所有本地容器
-D #全部下载到“/etc/kubeasz”
-P #下载系统包进行离线安装
-R #下载 Registry(harbor) 离线安装程序
-S #在容器中启动 kubeasz
-d 版本 #设置 docker-ce 版本,默认“20.10.9”
-e 版本 #设置 kubeasz-ext-bin 版本,默认“1.0.0”
-k 版本 #设置 kubeasz-k8s-bin 版本,默认“v1.23.1”
-m 版本 #设置docker注册镜像,默认“CN”(中国大陆使用)
-p 版本 #设置 kubeasz-sys-pkg 版本,默认“0.4.2”
-z 版本 #设置 kubeasz 版本,默认“3.2.0”
例:
#国内环境在线下载所有文件
./ezdown -D
#海外环境在线下载所有文件
./ezdown -D -m standard
#下载flannel、普罗米修斯等
./ezdown -X
#运行kubeasz工具(容器)
./ezdown -S
ezctl命令:
list #列出所有通过kubeasz部署的集群
checkout 集群名 #切换到指定集群的默认 kubeconfig
new 集群名 #部署新集群
setup 集群名 步骤 #设置集群,也支持一步一步的方式
start 集群名 #启动指定集群的所有服务
stop 集群名 #停止指定集群的所有服务
upgrade 集群名 #升级指定集群
destroy 集群名 #销毁指定集群
backup 集群名 #备份指定集群
restore 集群名 #从备份中恢复指定集群
start-aio #使用“默认”设置快速设置一体化集群
add-etcd 集群名 <ip> #添加新etcd节点到etcd集群
add-master 集群名 <ip> #添加一个master节点到k8s集群
add-node 集群名 <ip> #添加node节点到k8s集群
del-etcd 集群名 <ip> #从etcd集群中删除一个etcd节点
del-master 集群名 <ip> #从k8s集群中删除一个主节点
del-node 集群名 <ip> #从k8s集群中删除一个工作节点
kcfg-adm 集群名 选项 #管理 k8s 集群的客户端 kubeconfig
选项:
-A #使用新创建的用户添加客户端 kubeconfig
-D #删除现有用户的客户端 kubeconfig
-L #列出所有用户
-e #以小时为单位设置用户证书的到期时间(例如 24h、8h、240h)
-t #设置用户类型(管理员或视图)
-u #设置用户名前缀
例:
#创建集群
dk ezctl new k8s-01
#部署集群
dk ezctl setup k8s-01 all
#删除集群
dk ezctl destroy k8s-01
#列出k8s-01集群的所有用户
dk ezctl kcfg-adm k8s-01 -L
#添加管理员用户jack,有效期10天
dk ezctl kcfg-adm default -A -e 240h -t admin -u jack
#删除用户jim
dk ezctl kcfg-adm default -D -u jim-202101162141
集群默认配置文件解读:
hosts文件:
/etc/kubeasz/example/hosts.multi-node
所有k8s集群创建时生成的host文件都只是复制此文件
[etcd] #etcd节点ip
[kube_master] #master节点ip
[kube_node] #node节点ip
[harbor] #为此主机自动部署harbor
[ex_lb] #负载均衡器ip,通过此ip访问k8s集群
[chrony] #时间同步服务器
[all:vars] #其他变量
SECURE_PORT="6443" #k8s的集群端口
CONTAINER_RUNTIME="containerd" #运行时,还支持docker
CLUSTER_NETWORK="calico" #网络插件,支持calico, flannel, kube-router, cilium, kube-ovn
PROXY_MODE="ipvs" #集群网络模式
SERVICE_CIDR="10.68.0.0/16" #svc的网段
CLUSTER_CIDR="172.20.0.0/16" #pod网段
NODE_PORT_RANGE="30000-40000" #node几点可用物理端口
CLUSTER_DNS_DOMAIN="cluster.local" #dns解析的域名
bin_dir="/opt/kube/bin" #k8s二进制文件路径
base_dir="/etc/kubeasz" #k8s部署的路径,即ansible工作路径,不建议修改
cluster_dir="{{ base_dir }}/clusters/_cluster_name_" #特定集群部署路径
ca_dir="/etc/kubernetes/ssl" #证书路径
config.yml文件:
/etc/kubeasz/example/config.yml
所有k8s集群创建时生成的config文件都只是复制此文件
INSTALL_SOURCE: "online" #在线、离线安装
OS_HARDEN: false #系统安全相关配置
ntp_servers:
local_network: "0.0.0.0/0" #允许时间同步的网段
CA_EXPIRY: "876000h" #ca证书有效期,默认100年
CERT_EXPIRY: "438000h" #签发证书有效期,默认50年
CLUSTER_NAME: "cluster1"
CONTEXT_NAME: "context-{{ CLUSTER_NAME }}"
K8S_VER: "__k8s_ver__"
ETCD_DATA_DIR: "/var/lib/etcd" #etcd的数据目录
ETCD_WAL_DIR: ""
ENABLE_MIRROR_REGISTRY: true #启用容器镜像仓库
SANDBOX_IMAGE: "easzlab/pause:__pause__" #基础镜像
CONTAINERD_STORAGE_DIR: "/var/lib/containerd" #containerd的数据存放目录
DOCKER_STORAGE_DIR: "/var/lib/docker" #docker容器存储目录
ENABLE_REMOTE_API: false #docker开启Restful API
INSECURE_REG: '["127.0.0.1/8"]' #barhor仓库http地址
MASTER_CERT_HOSTS: #k8s集群master节点证书配置,可以添加多个ip和域名(比如增加公网ip和域名)
NODE_CIDR_LEN: 24 #pod子网掩码
KUBELET_ROOT_DIR: "/var/lib/kubelet" #Kubelet根目录
MAX_PODS: 110 #node节点最大pod数
KUBE_RESERVED_ENABLED: "no" #配置为kube组件(kubelet,kube-proxy,dockerd等)预留的资源量。数值设置在/etc/kubeasz/roles/kube-node/templates/kubelet-config.yaml.j2
SYS_RESERVED_ENABLED: "no" #要监控系统资源才开启。数值设置/etc/kubeasz/roles/kube-node/templates/kubelet-config.yaml.j2。系统预留设置基于4c/8g主机,如果性能高可增加预留,另外,集群安装时候apiserver等资源占用会短时较大,建议至少预留1g
BALANCE_ALG: "roundrobin" #负载均衡器的调度算法
#flannel插件
FLANNEL_BACKEND: "vxlan" #flanel插件网络模式设置,"host-gw","vxlan"
DIRECT_ROUTING: false #关闭路由
flannelVer: "__flannel__" #下载flannel版本
flanneld_image: "easzlab/flannel:{{ flannelVer }}"
flannel_offline: "flannel_{{ flannelVer }}.tar"
#calico插件
CALICO_IPV4POOL_IPIP: "Always" #calico插件设置:CALICO_IPV4POOL_IPIP=“off”,可以提高网络性能,但node不能跨子网通信,不同子网的node,pod网络不同(有的云服务不关闭这个pod网络不同)。详见docs/setup/calico.md
IP_AUTODETECTION_METHOD: "can-reach={{ groups['kube_master'][0] }}" #calico设置calico-node使用的主机ip,bgp邻居通过该地址建立,可手工指定也可以自动发现
CALICO_NETWORKING_BACKEND: "brid" #calico设置网络backend: brid, vxlan, none
calico_ver: "__calico__" #calico更新支持calico 版本: [v3.3.x] [v3.4.x] [v3.8.x] [v3.15.x]
calico_ver_main: "{{ calico_ver.split('.')[0] }}.{{ calico_ver.split('.')[1] }}" #calico 主版本
calico_offline: "calico_{{ calico_ver }}.tar" #calico离线镜像tar包
#cilium网络插件,性能最好的,但不好配置
ETCD_CLUSTER_SIZE: 1 #CILIUM_ETCD_OPERATOR创建的 etcd 集群节点数 1,3,5,7...
cilium_ver: "__cilium__" #cilium镜像版本
cilium_offline: "cilium_{{ cilium_ver }}.tar" #cilium离线镜像tar包
#kube-ovn 国产网络插件,k8s+open vswitch
OVN_DB_NODE: "{{ groups['kube_master'][0] }}" #kube-ovn选择 OVN DB and OVN Control Plane 节点,默认为第一个master节点
kube_ovn_ver: "__kube_ovn__" #kube-ovn离线镜像tar包
kube_ovn_offline: "kube_ovn_{{ kube_ovn_ver }}.tar"
#kube-router网络插件,使用ipvs负载+iptables隔离
OVERLAY_TYPE: "full" #kube-router公有云上存在限制,一般需要始终开启 ipinip;自有环境可以设置为 "subnet"
FIREWALL_ENABLE: "true" #kube-router的NetworkPolicy 支持开关
kube_router_ver: "__kube_router__" #kube-router]kube-router 镜像版本
busybox_ver: "1.28.4"
kuberouter_offline: "kube-router_{{ kube_router_ver }}.tar" #kube-router]kube-router离线镜像tar包
busybox_offline: "busybox_{{ busybox_ver }}.tar"
# coredns 自动安装
dns_install: "yes"
corednsVer: "__coredns__"
ENABLE_LOCAL_DNS_CACHE: true
dnsNodeCacheVer: "__dns_node_cache__"
LOCAL_DNS_CACHE: "169.254.20.10" #设置 local dns cache地址
# metric server 自动安装
metricsserver_install: "yes"
metricsVer: "__metrics__"
# dashboard 自动安装
dashboard_install: "yes"
dashboardVer: "__dashboard__"
dashboardMetricsScraperVer: "__dash_metrics__"
# ingress 自动安装
ingress_install: "no"
ingress_backend: "traefik"
traefik_chart_ver: "__traefik_chart__"
# prometheus 自动安装
prom_install: "no"
prom_namespace: "monitor"
prom_chart_ver: "__prom_chart__"
# nfs-provisioner 自动安装(用于自动配置nfs的pvc)
nfs_provisioner_install: "no"
nfs_provisioner_namespace: "kube-system"
nfs_provisioner_ver: "__nfs_provisioner__"
nfs_storage_class: "managed-nfs-storage"
nfs_server: "192.168.1.10"
nfs_path: "/data/nfs"
# role:harbor 调用harbor角色
HARBOR_VER: "__harbor__" # harbor version,完整版本号
HARBOR_DOMAIN: "harbor.yourdomain.com" #harbor的域名
HARBOR_TLS_PORT: 8443
HARBOR_SELF_SIGNED_CERT: true #如果设置为“false”,则需要将名为harbor.pem 和harbor-key.pem 的证书放在目录“/etc/kubeasz/down”中
#安装harbor扩展组件
HARBOR_WITH_NOTARY: false
HARBOR_WITH_TRIVY: false
HARBOR_WITH_CLAIR: false
HARBOR_WITH_CHARTMUSEUM: true

浙公网安备 33010602011771号