RKE:Ranchar Kubernetes Engine
https://github.com/rancher/rke
因为RKE是由golang编写,因此直接下载对应系统的二进制文件便可
下载地址: https://github.com/rancher/rk... node
1.建议使用Ubuntu 16.04.3 LTS版本;若是使用CentOS 7,建议7.3以上版本
2.各主机的hostname主机名必须不一样!
3.hosts文件设置:/etc/hosts要配置正确,必定要有127.0.0.1 localhost 这一项;hosts文件中包含全部主机节点的IP和名称列表。linux
经过Rancher提供的脚本进行安装(如下是最新支持的docker版本)nginx
Docker版本 | 安装脚本 |
---|---|
18.09.2 | curl https://releases.rancher.com/... | sh |
18.06.2 | curl https://releases.rancher.com/... | sh |
17.03.2 | curl https://releases.rancher.com/... | sh |
RKE经过SSH tunnel进行安装部署,须要事先创建RKE到各节点的SSH免密登陆。若是集群中有3个节点,须要在RKE机器上执行1遍秘钥生成命令ssh-keygen,并将生成侧公钥经过分发命令:ssh-copy-id {user}@{ip}。git
在各个节点上建立ssh用户,并将其添加至docker组中:github
useradd dockeruser usermod -aG docker dockeruser
注意:重启系统之后才能生效,只重启Docker服务是不行的!重启后,docker_user用户也能够直接使用docker run命令。
Ubuntu 16.04默认未安装,无需设置。golang
1)CentOS7下可修改配置文件web
vi /etc/sysconfig/selinux
2)设置 SELINUX=disabled,重启后永久关闭。docker
必须开启!Ubuntu 16.04下默认已启用,无需设置。api
1)CentOS7 下可编辑配置文件:dom
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
开放集群主机节点之间644三、237九、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,而后重启系统后生效。
CentOS下执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
1)在rke所在主机上建立密钥:
ssh-keygen
2)将所生成的密钥的公钥分发到各个节点:
ssh-copy-id dockeruser@xxx.xxx.xx.xx ...
能够输入命令rke_drawin-amd64 config(我本机是mac,因此使用drawin-amd64版本),跟着引导完成基础配置
配置完成后将会在当前目录下出现一个 cluster.yml
下面是该配置文件的内容(这里我配置的是包含两个节点的k8s集群,其中一个master,rke很容易支持HA部署,仅仅须要在配置文件中对多个节点指定role.controlplane便可)
nodes: - address: xxx.xxx.xxx.xxx port: "22" internal_address: "" role: - controlplane - worker - etcd hostname_override: master user: dockeruser docker_socket: /var/run/docker.sock labels: {} - address: xxx.xxx.xxx.xxx port: "22" internal_address: "" role: - worker hostname_override: node-1 user: dockeruser docker_socket: /var/run/docker.sock ssh_key: "" ssh_key_path: "" ssh_cert: "" ssh_cert_path: "" labels: {} services: etcd: image: "" extra_args: {} extra_binds: [] extra_env: [] external_urls: [] ca_cert: "" cert: "" key: "" path: "" snapshot: null retention: "" creation: "" backup_config: null kube-api: image: "" extra_args: {} extra_binds: [] extra_env: [] service_cluster_ip_range: 10.43.0.0/16 service_node_port_range: "" pod_security_policy: false always_pull_images: false kube-controller: image: "" extra_args: {} extra_binds: [] extra_env: [] cluster_cidr: 10.42.0.0/16 service_cluster_ip_range: 10.43.0.0/16 scheduler: image: "" extra_args: {} extra_binds: [] extra_env: [] kubelet: image: "" extra_args: {} extra_binds: [] extra_env: [] cluster_domain: cluster.local infra_container_image: "" cluster_dns_server: 10.43.0.10 fail_swap_on: false kubeproxy: image: "" extra_args: {} extra_binds: [] extra_env: [] network: plugin: flannel options: {} authentication: strategy: x509 sans: [] webhook: null addons: "" addons_include: [] system_images: etcd: rancher/coreos-etcd:v3.3.10-rancher1 alpine: rancher/rke-tools:v0.1.42 nginx_proxy: rancher/rke-tools:v0.1.42 cert_downloader: rancher/rke-tools:v0.1.42 kubernetes_services_sidecar: rancher/rke-tools:v0.1.42 kubedns: rancher/k8s-dns-kube-dns:1.15.0 dnsmasq: rancher/k8s-dns-dnsmasq-nanny:1.15.0 kubedns_sidecar: rancher/k8s-dns-sidecar:1.15.0 kubedns_autoscaler: rancher/cluster-proportional-autoscaler:1.3.0 coredns: rancher/coredns-coredns:1.3.1 coredns_autoscaler: rancher/cluster-proportional-autoscaler:1.3.0 kubernetes: rancher/hyperkube:v1.14.6-rancher1 flannel: rancher/coreos-flannel:v0.10.0-rancher1 flannel_cni: rancher/flannel-cni:v0.3.0-rancher1 calico_node: rancher/calico-node:v3.4.0 calico_cni: rancher/calico-cni:v3.4.0 calico_controllers: "" calico_ctl: rancher/calico-ctl:v2.0.0 canal_node: rancher/calico-node:v3.4.0 canal_cni: rancher/calico-cni:v3.4.0 canal_flannel: rancher/coreos-flannel:v0.10.0 weave_node: weaveworks/weave-kube:2.5.0 weave_cni: weaveworks/weave-npc:2.5.0 pod_infra_container: rancher/pause:3.1 ingress: rancher/nginx-ingress-controller:0.21.0-rancher3 ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1 metrics_server: rancher/metrics-server:v0.3.1 ssh_key_path: ~/.ssh/id_rsa ssh_cert_path: "" ssh_agent_auth: true authorization: mode: rbac options: {} ignore_docker_version: false kubernetes_version: "" private_registries: [] ingress: provider: "" options: {} node_selector: {} extra_args: {} cluster_name: "" cloud_provider: name: "" prefix_path: "" addon_job_timeout: 0 bastion_host: address: "" port: "" user: "" ssh_key: "" ssh_key_path: "" ssh_cert: "" ssh_cert_path: "" monitoring: provider: "" options: {} restore: restore: false snapshot_name: "" dns: null
rke_drawin-amd64 up
能够看到脚本开始输入一些日志信息
最终出现
Finished building Kubernetes cluster successfully
则表示集群安装成功。
集群安装成功后,RKE会在当前目录建立一个kube_config_cluster.yml文件,这个文件就是kubeconfig文件
默认状况下,kube配置文件被称为.kube_config_cluster.yml。将这个文件复制到你的本地~/.kube/config,就能够在本地使用kubectl了。
须要注意的是,部署的本地kube配置名称是和集群配置文件相关的。例如,若是您使用名为mycluster.yml的配置文件,则本地kube配置将被命名为.kube_config_mycluster.yml。
export KUBECONFIG=./kube_config_cluster.yml kubectl get node NAME STATUS ROLES AGE VERSION master Ready controlplane,etcd,worker 6m27s v1.14.6 node-1 Ready worker 6m5s v1.14.6
看到节点信息代表安装成功
RKE支持为角色为worker和controlplane的主机添加或删除节点。
1)添加节点:
要添加其余节点,只须要更新具备其余节点的集群配置文件,并使用相同的文件运行集群配置便可。
2)删除节点:
要删除节点,只需从集群配置文件中的节点列表中删除它们,而后从新运行rke up命令。
RKE工具是知足高可用的。您能够在集群配置文件中指定多个控制面板主机,RKE将在其上部署主控组件。
默认状况下,kubelets被配置为链接到nginx-proxy服务的地址——127.0.0.1:6443,该代理会向全部主节点发送请求。
要启动HA集群,只需使用controlplane角色指定多个主机,而后正常启动集群便可。
RKE支持rke remove命令。该命令执行如下操做:
链接到每一个主机并删除部署在其上的Kubernetes服务。
从服务所在的目录中清除每一个主机:
请注意,这个命令是不可逆的,它将完全摧毁Kubernetes集群。
ssh: handshake failed: ssh: unable to authenticate, attempted methods [publickey none], no supported methods remain
请检查配置文件中配置的用户是否可使用指定的私钥登陆机器