本模块用于安装和配置Kubernetes,这是一个开源系统,用于自动化部署、扩展和管理容器化应用。构成应用的容器被分组为逻辑单元,以便高效管理和发现。
为了以安全且可扩展的方式引导Kubernetes集群,本模块使用kubeadm工具包。
模块包含https://github.com/puppetlabs/puppetlabs-kubernetes/blob/master/tooling/kube_tool.rb%E9%85%8D%E7%BD%AE%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%AF%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90Hiera%E5%AE%89%E5%85%A8%E5%8F%82%E6%95%B0%E3%80%81%E5%8F%91%E7%8E%B0%E4%BB%A4%E7%89%8C%E5%93%88%E5%B8%8C%E5%92%8C%E5%85%B6%E4%BB%96%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E3%80%82%E4%B8%BA%E7%AE%80%E5%8C%96%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8%EF%BC%8C%E8%AF%A5%E5%B7%A5%E5%85%B7%E4%BB%A5Docker%E9%95%9C%E5%83%8F%E5%BD%A2%E5%BC%8F%E6%8F%90%E4%BE%9B%E3%80%82
如果工作站未安装Docker,请从Docker官网安装。
Kubetool Docker镜像将每个参数作为环境变量接收。
注意:使用的Kubetool版本必须与Puppet Forge上的模块版本匹配。例如,若使用模块版本1.0.0,则使用puppet/kubetool:1.0.0。
要在工作目录中输出对应操作系统的yaml文件(针对每个控制器节点),运行以下任一docker run命令:
bashdocker run --rm -v $(pwd):/mnt --env-file env puppet/kubetool:{$module_version}
上述命令包含一个env文件,位于此仓库的根目录中。
bashdocker run --rm -v $(pwd):/mnt -e OS=debian -e VERSION=1.10.2 -e CONTAINER_RUNTIME=docker -e CNI_PROVIDER=weave -e ETCD_INITIAL_CLUSTER=kube-master:172.17.10.101,kube-replica-master-01:172.17.10.210,kube-replica-master-02:172.17.10.220 -e ETCD_IP="%{::ipaddress_eth1}" -e KUBE_API_ADVERTISE_ADDRESS="%{::ipaddress_eth1}" -e INSTALL_DASHBOARD=true puppet/kubetool:{$module-version}
参数说明:
OS:Kubernetes运行的操作系统VERSION:要部署的Kubernetes版本CONTAINER_RUNTIME:Kubernetes使用的容器运行时,可设为docker(官方支持)或cri_containerd(高级用户使用,需了解Kubernetes HA集群知识)CNI_PROVIDER:要安装的CNI网络,可设为weave或flannelETCD_INITIAL_CLUSTER:服务器主机名和IP,格式为hostname:ip。生产环境中,etcd节点数应为3、5或7个ETCD_IP:每个etcd成员监听的IP,建议使用集群接口的fact值KUBE_API_ADVERTISE_ADDRESS:每个控制器上etcd/apiserver实例使用的IP,建议使用集群接口的fact值INSTALL_DASHBOARD:布尔值,指定是否安装dashboardKubetool创建:
OS参数的yaml文件(如Debian系统为Debian.yaml,RedHat系统为RedHat.yaml),包含引导初始etcd集群的证书信息,需放在hieradata目录的节点级别kubetool命令重新生成(包括证书和令牌){$OS}.yaml和{$hostname}.yaml文件到Hiera将{$OS}.yaml文件添加到Hiera数据所在的控制仓库(通常是data目录)。通过利用位置fact(如pp_datacenter 可信fact),每个集群可分配自己的配置。
将{$OS}.yaml和{$hostname}.yaml文件添加到Puppet服务器上的Hiera目录后,将节点配置为控制器或工作节点。
控制器节点包含控制平面和etcd,生产集群应配置3、5或7个控制器;工作节点运行应用,可根据Kubernetes承载能力添加任意数量。
注意:节点不能同时作为控制器和工作节点,只能二选一。
配置为控制器节点
在manifest中添加以下代码:
puppetclass {'kubernetes': controller => true, }
配置为工作节点
在manifest中添加以下代码:
puppetclass {'kubernetes': worker => true, }
本模块兼容Puppet Development Kit (PDK),提供工具帮助运行模块单元测试并验证模块元数据、语法和样式。
注意:要使用pdk validate和pdk test unit命令对模块运行静态验证和单元测试,必须安装Puppet 5或更高版本。以下示例指定Puppet 5.3.6。
验证metadata.json文件
bashpdk validate metadata --puppet-version='5.3.6'
验证Puppet代码和语法
bashpdk validate puppet --puppet-version='5.3.6'
注意:pdk validate ruby命令会忽略.rubocop.yml文件中指定的排除目录。因此,要验证Ruby代码样式和语法,必须指定代码所在目录。
例如,验证lib目录中的Ruby代码:
bashpdk validate ruby lib --puppet-version='5.3.6'
单元测试模块
bashpdk test unit --puppet-version='5.3.6'
公共类
私有类
kubernetes类可用以下参数:
apiserver_cert_extra_sans
API服务器证书的主题备用名称字符串数组,默认[]。
apiserver_extra_arguments
传递给API服务器的额外参数字符串数组,默认[]。
cloud_provider
/etc/kubernetes/cloud-config中配置的云提供商名称,默认undef。注意:此文件不由本模块管理,引导Kubernetes控制器前必须存在。
cloud_config
cloud_provider使用的云配置文件位置(v1.12及以上版本使用),默认undef。注意:此文件不由本模块管理,引导Kubernetes控制器前必须存在。
cni_network_provider
CNI提供商yaml文件的URL,由kube_tool设置,默认undef。
cni_rbac_binding
CNI提供商RBAC规则的下载URL(仅Calico使用),默认undef。
cni_pod_cidr
指定覆盖(内部)网络范围,由kube_tool根据CNI_PROVIDER设置,默认undef。
container_runtime
Kubernetes集群使用的运行时,有效值为cri_containerd或docker,默认docker。
controller
指定节点是否为Kubernetes控制器,有效值true/false,默认false。
containerd_version
要安装的containerd运行时版本,默认1.1.0。
containerd_archive
containerd归档文件名称,默认containerd-${containerd_version}.linux-amd64.tar.gz。
containerd_source
containerd归档文件的下载URL,默认https://github.com/containerd/containerd/releases/download/v${containerd_version}/${containerd_archive}。
controller_address
工作节点加入的控制器IP地址和端口(如172.17.10.101:6443),默认undef。
create_repos
指定是否安装上游Kubernetes和Docker仓库,有效值true/false,默认true。
disable_swap
指定是否关闭swap设置(kubeadm要求),有效值true/false,默认true。
manage_kernel_modules
指定是否管理Kubernetes所需的内核模块,有效值true/false,默认true。
manage_sysctl_settings
指定是否管理Kubernetes所需的sysctl设置,有效值true/false,默认true。
discovery_token_hash
加入集群时用于验证根CA公钥的字符串,由kubetool创建,默认undef。
docker_apt_location
Docker包的APT仓库URL,默认https://apt.dockerproject.org/repo。
docker_apt_release
Docker包APT仓库的发行名称,默认'ubuntu-${::lsbdistcodename}'。
docker_apt_repos
从Docker APT URL安装的仓库,默认main。
docker_version
要安装的Docker运行时版本,默认:
17.03.0.ce-1.el7.centos17.03.0~ce-0~ubuntu-xenialdocker_package_name
从上游仓库下载的Docker包名称,默认docker-engine。
docker_key_id
Docker APT仓库的GPG密钥ID,默认'58118E89F3A912897C070ADBF76221572C52609D'。
docker_key_source
Docker APT仓库GPG密钥的URL,默认https://apt.dockerproject.org/gpg。
docker_yum_baseurl
Docker包的YUM仓库URL,默认https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。
docker_yum_gpgkey
Docker YUM仓库GPG密钥的URL,默认https://yum.dockerproject.org/gpg。
etcd_version
etcd版本,默认3.1.12。
etcd_archive
etcd归档文件名称,默认etcd-v${etcd_version}-linux-amd64.tar.gz。
etcd_source
etcd归档文件的下载URL,默认https://github.com/coreos/etcd/releases/download/v${etcd_version}/${etcd_archive}。
etcd_ip
etcd用于通信的IP地址,Hiera示例:kubernetes::etcd_ip:"%{::ipaddress_enp0s8}",默认undef。
etcd_initial_cluster
告知etcd集群中的节点数量,Hiera示例:kubernetes::etcd_initial_cluster: kube-master:172.17.10.101,kube-replica-master-01:172.17.10.210,kube-replica-master-02:172.17.10.220,默认undef。
etcd_peers
etcd列出连接集群的对等节点,Hiera示例:kubernetes::etcd_peers:
undef。etcd_ca_key
etcd集群的CA证书密钥数据(字符串形式,非文件),默认undef。
etcd_ca_crt
etcd集群的CA证书数据(字符串形式,非文件),默认undef。
etcdclient_key
etcd集群的客户端证书密钥数据(字符串形式,非文件),默认undef。
etcdclient_crt
etcd集群的客户端证书数据(字符串形式,非文件),默认undef。
etcdserver_key
etcd集群的服务器证书密钥数据(字符串形式,非文件),默认undef。
etcdserver_crt
etcd集群的服务器证书数据(字符串形式,非文件),默认undef。
etcdpeer_crt
etcd集群的对等节点证书数据(字符串形式,非文件),默认undef。
etcdpeer_key
etcd集群的对等节点证书密钥数据(字符串形式,非文件),默认undef。
image_repository
拉取控制平面镜像的容器 registry,默认k8s.gcr.io。
install_dashboard
指定是否安装Kubernetes dashboard,有效值true/false,默认false。
kubernetes_ca_crt
集群CA证书(字符串形式,非文件),默认undef。
kubernetes_ca_key
集群CA密钥(字符串形式,非文件),默认undef。
kube_api_advertise_address
API服务器公开的IP地址,Hiera示例:kubernetes::kube_api_advertise_address:"%{::ipaddress_enp0s8}",默认undef。
kubernetes_version
要安装的Kubernetes容器版本,默认1.10.2。
kubernetes_package_version
要安装的Kubernetes OS包(如kubectl和kubelet)版本,默认1.10.2。
kubeadm_extra_config
包含额外配置数据的哈希,将通过to_yaml序列化并附加到kubeadm使用的config.yaml文件,默认{}。
kubelet_extra_config
包含额外配置数据的哈希,将通过to_yaml序列化并附加到集群的Kubelet配置文件(需DynamicKubeletConfig),默认{}。
kubelet_extra_arguments
附加到Kubelet的nodeRegistration配置中kubeletExtraArgs的字符串数组,适用于主节点和工作节点,用于配置关键Kubelet设置(如pod-infra-container-image),默认[]。
kubernetes_apt_location
Kubernetes包的APT仓库URL,默认https://apt.kubernetes.io。
kubernetes_apt_release
Kubernetes包APT仓库的发行名称,默认'kubernetes-${::lsbdistcodename}'。
kubernetes_apt_repos
使用Kubernetes APT URL安装的仓库,默认main。
kubernetes_key_id
Kubernetes APT仓库的GPG密钥ID,默认'54A647F9048D5688D7DA2ABE6A030B21BA07F4FB'。
kubernetes_key_source
APT仓库GPG密钥的URL,默认https://packages.cloud.google.com/apt/doc/apt-key.gpg。
kubernetes_yum_baseurl
Kubernetes包的YUM仓库URL,默认https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。
kubernetes_yum_gpgkey
Kubernetes YUM仓库GPG密钥的URL,默认https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg。
manage_docker
指定是否通过此模块安装Docker仓库和包,有效值true/false,默认true。
manage_etcd
指定是否通过此模块安装外部Etcd,有效值true/false,默认true。
node_label
节点标签的覆盖值,默认hostname。
runc_source
runc的下载URL,默认`https
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务