1)建议使用Ubuntu 16.04.3 LTS版本;如果使用CentOS 7,建议7.3以上版本;
序号 |
角色 |
操作系统 |
IP |
主机 |
1 | RKE | CentOS7 | 10.0.32.134 | rancher-server |
2 | etcd | CentOS7 | 10.0.32.175 | rancher2-server |
3 | Master Node | CentOS7 | 10.0.32.175 | rachenr2-server |
4 | Worker Node | CentOS7 | 10.0.32.177 | rancher2-node01 |
5 | Worker Node | CentOS7 | 10.0.32.178 | rancher2-node02 |
2)各主机的hostname主机名必须不同!
3)hosts文件设置:/etc/hosts要配置正确,一定要有127.0.0.1 localhost 这一项;hosts文件中包含所有主机节点的IP和名称列表。
Ubuntu 16.04默认未安装,无需设置。
1)CentOS7下可修改配置文件
#vi /etc/sysconfig/selinux
2)设置 SELINUX=disabled,重启后永久关闭。
必须开启!Ubuntu 16.04下默认已启用,无需设置。
1)CentOS7 下可编辑配置文件:
# vi /etc/sysctl.conf
2)设置:
net.ipv4.ip_forward =1 net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables =1
3)执行如下命令生效:
#sudo sysctl -p
开放集群主机节点之间6443、2379、2380端口,如果是刚开始试用,可以先关闭防火墙;
#systemctl stop firewalld
Ubuntu默认未启用UFW防火墙,无需设置。也可手工关闭:sudo ufw disable
一定要禁用swap,否则kubelet组件无法运行。
1)永久禁用swap
可以直接修改
# vi /etc/fstab
文件,注释掉swap项。
2)临时禁用
# swapoff -a
修改配置文件/etc/default/grub,启用cgroup内存限额功能,配置两个参数:
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1" GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
注意:要执行sudo update-grub 更新grub,然后重启系统后生效。
RKE通过SSH tunnel进行安装部署,需要事先建立RKE到各节点的SSH免密登录。如果集群中有3个节点,需要在RKE机器上执行1遍秘钥生成命令ssh-keygen,并将生成侧公钥通过分发命令:ssh-copy-id {user}@{ip}。
1)在各个节点(10.0.32.177、10.0.32.178、10.0.32.175)上创建ssh用户,并将其添加至docker组中:
#useradd docker_user#usermod -aG docker docker_user
注意:重启系统以后才能生效,只重启Docker服务是不行的!重启后,docker_user用户也可以直接使用docker run命令。
2)在rke所在主机上创建密钥:
#ssh-keygen
3)将所生成的密钥的公钥分发到各个节点:
#ssh-copy-id docker_user@10.0.32.177#ssh-copy-id docker_user@10.0.32.178#ssh-copy-id docker_user@10.0.32.175
从Rancher的官方GitHub仓库安装下载RKE。 RKE可以在Linux和MacOS机器上运行。安装完成后,运行以下代码,确保您使用的是最新版本:
./rke --versionrke version v0.0.6-dev./rke --helpNAME: rke -RancherKubernetesEngine,Running kubernetes cluster in the cloudUSAGE: rke [global options] command [command options][arguments...]VERSION: v0.0.6-devAUTHOR(S):RancherLabs,Inc.COMMANDS: up Bring the cluster up remove Teardown the cluster and clean cluster nodes version Show cluster Kubernetes version config, config Setup cluster configuration help, h Shows a list of commands or help for one commandGLOBAL OPTIONS:--debug,-d Debug logging--help,-h show help--version,-v print the version
默认情况下,RKE将查找名为cluster.yml的文件,该文件中包含有关将在服务器上运行的远程服务器和服务的信息。cluster.yml文件应该是这样的:
#节点信息nodes:#master和etcd节点- address:10.0.32.175 user: docker_user role:[controlplane,etcd]#工作节点- address:10.0.32.177 user: docker_user ssh_key_path:~/.ssh/id_rsa role:[worker]- address:10.0.32.178 ssh_key_path:~/.ssh/id_rsa user: docker_user role:[worker]#服务信息services: etcd: image: quay.io/coreos/etcd:latest kube-api: pod_security_policy:false image: rancher/k8s:v1.8.5-rancher4 service_cluster_ip_range:10.233.0.0/18 kube-controller: cluster_cidr:10.233.64.0/18 image: rancher/k8s:v1.8.5-rancher4 scheduler: image: rancher/k8s:v1.8.5-rancher4 kubelet: cluster_domain: cluster.local cluster_dns_server:10.233.0.3 infra_container_image: gcr.io/google_containers/pause-amd64:3.0 image: rancher/k8s:v1.8.5-rancher4 kubeproxy: image: rancher/k8s:v1.8.5-rancher4 #网络模式network: plugin: flannel#镜像system_images: flannel: rancher/coreos-flannel:v0.9.1 kubedns: rancher/k8s-dns-kube-dns-amd64:1.14.5 dnsmasq: rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.5 kubedns_sidecar: rancher/k8s-dns-sidecar-amd64:1.14.5 kubedns_autoscaler: rancher/cluster-proportional-autoscaler-amd64:1.0.0 dashboard: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3#认证模式authentication: strategy: x509
集群配置文件包含一个节点列表。每个节点至少应包含以下值:
另一节是“服务”,其中包含有关将在远程服务器上部署的Kubernetes组件的信息。
有三种类型的角色可以使用主机:
要运行RKE,首先要确保cluster.yml文件在同一个目录下,然后运行如下命令:
➜./rke up
若想指向另一个配置文件,运行如下命令:
➜./rke up --config /tmp/config.yml
输出情况将如下所示:
RKE是一个幂等工具,可以运行多次,且每次均产生相同的输出。如下的网络插件它均可以支持部署:
要使用不同的网络插件,您可以在配置文件中指定:
network: plugin: calico
RKE支持在集群引导程序中使用可插拔的插件。用户可以在cluster.yml文件中指定插件的YAML。
RKE在集群启动后会部署插件的YAML。RKE首先会将这个YAML文件作为配置映射上传到Kubernetes集群中,然后运行一个Kubernetes作业来挂载这个配置映射并部署这些插件。
请注意,RKE暂不支持删除插件。插件部署完成后,就不能使用RKE来改变它们了。
要开始使用插件,请使用集群配置文件中的addons:选项,例如:
请注意,我们使用|-,因为插件是一个多行字符串选项,您可以在其中指定多个YAML文件并用“—”将它们分开。
RKE支持为角色为worker和controlplane的主机添加或删除节点。
1)添加节点:
要添加其他节点,只需要更新具有其他节点的集群配置文件,并使用相同的文件运行集群配置即可。
2)删除节点:
要删除节点,只需从集群配置文件中的节点列表中删除它们,然后重新运行rke up命令。
RKE工具是满足高可用的。您可以在集群配置文件中指定多个控制面板主机,RKE将在其上部署主控组件。
默认情况下,kubelets被配置为连接到nginx-proxy服务的地址——127.0.0.1:6443,该代理会向所有主节点发送请求。
要启动HA集群,只需使用controlplane角色指定多个主机,然后正常启动集群即可。
1)下载kubectl
此处是在windows下安装,因此下载kubectl.exe,下载地址:https://storage.googleapis.com/kubernetes-release/release/v1.9.0/bin/windows/amd64/kubectl.exe。
并将kubectl.exe所在的地址添加至Windows的环境变量的Path中。
其他操作系统下安装kubectl,请参考:https://kubernetes.io/docs/tasks/tools/install-kubectl/#tabset-2
2)配置kubeconfig文件
RKE会在配置文件所在的目录下部署一个本地文件,该文件中包含kube配置信息以连接到新生成的群集。
默认情况下,kube配置文件被称为.kube_config_cluster.yml。将这个文件复制到你的本地~/.kube/config,就可以在本地使用kubectl了。
需要注意的是,部署的本地kube配置名称是和集群配置文件相关的。例如,如果您使用名为mycluster.yml的配置文件,则本地kube配置将被命名为.kube_config_mycluster.yml。
执行kubectl命令,获取nodes的信息:
$ kubectl get nodes
RKE默认使用x509身份验证方法来设置Kubernetes组件和用户之间的身份验证。RKE会首先为每个组件和用户组件生成证书。
生成证书后,RKE会将生成的证书部署到/etc/kubernetes/ssl服务器,并保存本地kube配置文件,其中包含主用户证书,在想要删除或升级集群时可以与RKE一起使用。
然后,RKE会将每个服务组件部署为可以相互通信的容器。RKE还会将集群状态保存在Kubernetes中作为配置映射以备后用。
1)下kubernetes-dashboard.yaml文件
通过:https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml 地址,能够下载下载kubernetes-dashboard.yaml文件。
2)编辑kubernetes-dashboard.yaml文件
通过编辑工具打开kubernetes-dashboard.yaml,并在此文件中的Service部分下添加type: NodePort和nodePort: 30001,添加位置如下图所示。
3)通过执行如下的命令部署Web UI
# kubectl create -f {path}/kubernetes-dashboard.yaml
1)在浏览器中输入:https://{Master IP}:30001,此处为https://10.0.32.175:3001,打开页面如下:
2)创建一个管理员用户
创建amind-user.yaml文件,文件内容如下:
apiVersion: v1kind:ServiceAccountmetadata: name: admin-usernamespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind:ClusterRoleBindingmetadata: name: admin-user annotations: rbac.authorization.kubernetes.io/autoupdate:"true"roleRef: apiGroup: rbac.authorization.k8s.io kind:ClusterRole name: cluster-adminsubjects:- kind:ServiceAccount name: admin-usernamespace: kube-system
通过执行如下命令创建admin-user:
#kubectl create -f {path}/admin-user.yaml
3)获取管理员用户的Token
通过执行如下命令获取系统Token信息:
#kubectl describe secret admin-user --namespace=kube-system
4)添加Token至kubeconfig文件
通过编辑工具打开kubeconfig文件(~/.kube/config),并添加Token。
5)导入kubeconfig文件
在界面中导入kubeconfig文件。
5.3 删除集群
RKE支持rke remove命令。该命令执行以下操作:
连接到每个主机并删除部署在其上的Kubernetes服务。
从服务所在的目录中清除每个主机:
请注意,这个命令是不可逆的,它将彻底摧毁Kubernetes集群。
1. 《rke》地址:https://github.com/rancher/rke
作者简介:
季向远,北京神舟航天软件技术有限公司产品经理。本文版权归原作者所有。