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

posted @ 2022-09-02 15:06  suyanhj  阅读(646)  评论(0)    收藏  举报