安装 OpenKruise

OpenKruise 要求 Kubernetes 版本高于 1.13+,注意在 1.13 和 1.14 版本中必须先在 kube-apiserver 中打开 CustomResourceWebhookConversion feature-gate。

通过 helm charts 安装

建议采用 helm v3.1+ 来安装 Kruise,helm 是一个简单的命令行工具可以从 这里 获取。

  1. # Kubernetes 1.13 或 1.14 版本
  2. helm install kruise https://github.com/openkruise/kruise/releases/download/v0.9.0/kruise-chart.tgz --disable-openapi-validation
  3. # Kubernetes 1.15 和更新的版本
  4. helm install kruise https://github.com/openkruise/kruise/releases/download/v0.9.0/kruise-chart.tgz

通过 helm charts 升级

如果你在使用旧版本的 Kruise,建议为了安全性和更丰富的功能,升级到最新版本:

  1. # Kubernetes 1.13 and 1.14
  2. helm upgrade kruise https://github.com/openkruise/kruise/releases/download/v0.9.0/kruise-chart.tgz --disable-openapi-validation
  3. # Kubernetes 1.15 and newer versions
  4. helm upgrade kruise https://github.com/openkruise/kruise/releases/download/v0.9.0/kruise-chart.tgz

注意:

  1. 在升级之前,必须 先阅读 Change Log ,确保你已经了解新版本的不兼容变化。
  2. 如果你要重置之前旧版本上用的参数或者配置一些新参数,建议在 helm upgrade 命令里加上 --reset-values

可选项

注意直接安装 chart 会使用默认的 template values,你也可以根据你的集群情况指定一些特殊配置,比如修改 resources 限制或者配置 feature-gates。

可选: chart 安装参数

下表展示了 chart 所有可配置的参数和它们的默认值:

ParameterDescriptionDefault
featureGates可配置的 feature gates 参数,空表示按默认开关处理``
installation.namespacekruise 安装到的 namespace,一般不建议修改kruise-system
manager.log.levelkruise-manager 日志输出级别4
manager.replicaskruise-manager 的期望副本数2
manager.image.repositorykruise-manager/kruise-daemon 镜像仓库openkruise/kruise-manager
manager.image.tagkruise-manager/kruise-daemon 镜像版本v0.9.0
manager.resources.limits.cpukruise-manager 的 limit CPU 资源100m
manager.resources.limits.memorykruise-manager 的 limit memory 资源256Mi
manager.resources.requests.cpukruise-manager 的 request CPU 资源100m
manager.resources.requests.memorykruise-manager 的 request memory 资源256Mi
manager.metrics.portmetrics 服务的监听端口8080
manager.webhook.portwebhook 服务的监听端口9443
manager.nodeAffinitykruise-manager 部署的 node affinity 亲和性{}
manager.nodeSelectorkruise-manager 部署的 node selector 亲和性{}
manager.tolerationskruise-manager 部署的 tolerations[]
daemon.log.levelkruise-daemon 日志输出级别4
daemon.portkruise-daemon 的 metrics/healthz 服务监听端口10221
daemon.resources.limits.cpukruise-daemon 的 limit CPU 资源50m
daemon.resources.limits.memorykruise-daemon 的 limit memory 资源128Mi
daemon.resources.requests.cpukruise-daemon 的 request CPU 资源0
daemon.resources.requests.memorykruise-daemon 的 request memory 资源0
daemon.affinitykruise-daemon 部署的 affinity 亲和性 (可以排除一些 node 不部署 daemon){}
daemon.socketLocationNode 节点上 CRI socket 文件所在目录/var/run
webhookConfiguration.failurePolicy.podsPod webhook 的失败策略Ignore
webhookConfiguration.timeoutSeconds所有 Kruise webhook 的调用超时时间30
crds.managed是否安装 Kruise CRD (如何关闭则 chart 不会安装任何 CRD)true

这些参数可以通过 --set key=value[,key=value] 参数在 helm installhelm upgrade 命令中生效。

可选: feature-gate

Feature-gate 控制了 Kruise 中一些有影响性的功能:

NameDescriptionDefaultSide effect (if closed)
PodWebhook启用对于 Pod 创建 的 webhook (不建议关闭)trueSidecarSet/KruisePodReadinessGate 不可用
KruiseDaemon启用 kruise-daemon DaemonSet (不建议关闭)true镜像预热/容器重启 不可用
CloneSetShortHash启用 CloneSet controller 只在 pod label 中设置短 hash 值falseCloneSet 名字不能超过 54 个字符(默认行为)
KruisePodReadinessGate启用 Kruise webhook 将 ‘KruisePodReady’ readiness-gate 在所有 Pod 创建时注入false只会注入到 Kruise workloads 创建的 Pod 中
PreDownloadImageForInPlaceUpdate启用 CloneSet 自动为原地升级的过程创建 ImagePullJob 来预热镜像false原地升级无镜像提前预热
CloneSetPartitionRollback启用如果 partition 被调大, CloneSet controller 会回滚 Pod 到 currentRevision 老版本falseCloneSet 只会正向发布 Pod 到 updateRevision
ResourcesDeletionProtectionEnables protection for resources deletionfalse资源删除无保护

如果你要配置 feature-gate,只要在安装或升级时配置参数即可,比如:

  1. $ helm install kruise https://... --set featureGates="ResourcesDeletionProtection=true\,PreDownloadImageForInPlaceUpdate=true"

如果你希望打开所有 feature-gate 功能,配置参数 featureGates=AllAlpha=true

可选: 中国本地镜像

如果你在中国、并且很难从官方 DockerHub 上拉镜像,那么你可以使用托管在阿里云上的镜像仓库:

  1. $ helm install kruise https://... --set manager.image.repository=openkruise-registry.cn-hangzhou.cr.aliyuncs.com/openkruise/kruise-manager

卸载

注意:卸载会导致所有 Kruise 下的资源都会删除掉,包括 webhook configurations, services, namespace, CRDs, CR instances 以及所有 Kruise workload 下的 Pod。 请务必谨慎操作!

卸载使用 helm chart 安装的 Kruise:

  1. $ helm uninstall kruise
  2. release "kruise" uninstalled