RKE部署Kubernetes集群
摘要
安装docker(略)
在各个节点建立自定义账户,使其可以用命令操作docker
1 | useradd <user_name> |
配置主节点到各个节点用户的免密登录
1 | ssh-keygen |
注意,应使用能够操作docker的用户(非root)做免密。在这个例子中使用rancher用户。
下载RKE
RKE下载地址,此处下载更快
1 | wget https://github.com/rancher/rke/releases/download/v1.1.3/rke_linux-amd64 |
K8S安装
准备Kubernetes集群的节点
Kubernetes集群组件在Linux系统上以docker容器的形式运行,您可以使用熟悉的Linux发行版,只要它可以满足Docker和Kubernetes的运行需要。
创建rke配置文件
有两种简单的方法可以创建cluster.yml
:
- 使用我们的最小rke配置cluster.yml并根据将使用的节点更新它;
- 使用
rke config
向导式生成配置;
运行rke config
配置向导
1 | ./rke_linux-amd64 config |
官方示例 cluster.yml
指定名称创建配置文件
1 | rke config --name cluster.yml |
创建空的cluster.yml
如果需要空的cluster.yml
模板,可以使用该--empty
参数生成空模板。
1 | rke config --empty --name cluster.yml |
仅打印cluster.yml
您可以使用--print
参数将生成的配置打印到stdout,而不是创建文件。
1 | rke config --print |
高可用性
RKE支持Kubernetes集群HA方式部署,您可以在cluster.yml
文件中指定多个controlplane
节点。RKE将在这些节点上部署master
组件,并且kubelet配置为默认连接127.0.0.1:6443
,这是nginx-proxy
代理向所有主节点请求的服务的地址。
证书
从v0.2.0版本起可用
默认情况下,Kubernetes 集群需要用到证书,而 RKE 会自动为所有集群组件生成证书。您也可以使用自定义证书。部署集群后,您可以管理这些自动生成的证书,详情请参考管理自动生成的证书。
RKE部署Kubernetes集群
创建cluster.yml
完成后,可以使用简单的命令部署集群。此命令假定该cluster.yml
文件与运行该命令的目录位于同一目录中。
1 | ./rke_linux-amd64 up |
在创建Kubernetes集群时会有日志语句。
1 | ./rke_darwin-amd64 up |
当最后一行显示Finished building Kubernetes cluster successfully表示集群已部署完成。作为Kubernetes创建过程的一部分,已创建并编写了一个kubeconfig文件,该文件kube_config_cluster.yml用于与Kubernetes集群进行交互。 如果您使用了不同的cluster.yml文件名,则kube配置文件将以kube_config_
遇到FATA[0337] Failed to get job complete status for job rke-network-plugin-deploy-job in namespace kube-system
错误,重新执行一遍./rke_linux-amd64 up
即可
保存文件
警告
后期的故障排除和集群升级都需要以下文件
将以下文件的副本保存在安全位置:
cluster.yml
:RKE 集群的配置文件。kube_config_cluster.yml
:该集群的Kubeconfig 文件包含了获取该集群所有权限的认证凭据。cluster.rkestate
:Kubernetes 集群状态文件,包含了获取该集群所有权限的认证凭据,使用 RKE v0.2.0 时才会创建这个文件。
Kubernetes集群状态文件
Kubernetes集群状态由Kubernetes集群中的集群配置文件cluster.yml
和组件证书
组成,由RKE生成,但根据您的RKE版本,集群状态的保存方式不同。
- 在v0.2.0之前,RKE将Kubernetes集群状态保存为
secret
。更新状态时,RKE会提取secret
,更新/更改
状态并保存新secret
。 - 从v0.2.0开始,RKE在集群配置文件
cluster.yml
的同一目录中创建一个.rkestate
文件。该.rkestate
文件包含集群的当前状态,包括RKE配置和证书
。需要保留此文件以更新集群或通过RKE对集群执行任何操作。
下载kubectl
1 | curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl |
使用RKE创建Kubernetes集群时,RKE会在本地目录中创建一个包含认证信息的配置文件kube_config_rancher-cluster.yml
,以使用kubectl
或helm
等工具连接到新集群。
您可以将此文件复制到$HOME/.kube/config
或者如果您正在使用多个Kubernetes集群,请将KUBECONFIG
环境变量设置为路径kube_config_rancher-cluster.yml
。
1 | mkdir $HOME/.kube/ |
测试您的连接,看看是否可以返回节点列表。
1 | kubectl get nodes |
启用 kubectl 自动补全
先决条件:确保已安装 bash-autocompletion
并可以正常工作。
1 | # 安装 bash-completion |