安装docker

在各个节点建立自定义账户,使其可以用命令操作docker

useradd <user_name>
passwd <user_name>
usermod -aG docker <user_name>
su <user_name>
docker info

配置主节点到各个节点用户的免密登录

ssh-keygen
ssh-copy-id <user_name>@<节点IP>

注意,应使用能够操作docker的用户(非root)做免密。在这个例子中使用rancher用户。

下载RKE

RKE下载地址,此处下载更快

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配置向导

  • 选项详解
./rke_linux-amd64 config[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]: 使用~/.ssh/id_rsa
[+] Number of Hosts [1]: 集群主机个数
[+] SSH Address of host (1) [none]: 主机1地址
[+] SSH Port of host (1) [22]: SSH端口
[+] SSH Private Key Path of host (10.180.210.237) [none]: 使用~/.ssh/id_rsa
[+] SSH User of host (10.180.210.237) [ubuntu]: SSH用户名,这里使用rancher
[+] Is host (10.180.210.237) a Control Plane host (y/n)? [y]: 是否运行Control Plane
[+] Is host (10.180.210.237) a Worker host (y/n)? [n]: 是否是worker
[+] Is host (10.180.210.237) an etcd host (y/n)? [n]: 是否运行etcd
[+] Override Hostname of host (10.180.210.237) [none]: 是否重设hostname
[+] Internal IP of host (10.180.210.237) [none]: 主机内部IP
[+] Docker socket path on host (10.180.210.237) [/var/run/docker.sock]: docker sock路径,使用默认
[+] SSH Address of host (2) [none]: 主机2的配置,后续配置相同,不再赘述
......
[+] Network Plugin Type (flannel, calico, weave, canal) [canal]: 网络插件类型
[+] Authentication Strategy [x509]: 认证策略
[+] Authorization Mode (rbac, none) [rbac]: 认证模式
[+] Kubernetes Docker image [rancher/hyperkube:v1.15.5-rancher1]: k8s镜像名
[+] Cluster domain [cluster.local]: 集群域名
[+] Service Cluster IP Range [10.43.0.0/16]: 集群内服务IP的范围
[+] Enable PodSecurityPolicy [n]: pod安全策略
[+] Cluster Network CIDR [10.42.0.0/16]: 集群网络范围
[+] Cluster DNS Service IP [10.43.0.10]: 集群DNS的IP
[+] Add addon manifest URLs or YAML files [no]: 是否增加插件manifest URL或配置文件
  • 此次实验设置【仅供参考】
[root@node01 ~]# ./rke_linux-amd64 config
[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]:
[+] Number of Hosts [1]: 3
[+] SSH Address of host (1) [none]: 192.168.1.10
[+] SSH Port of host (1) [22]:
[+] SSH Private Key Path of host (192.168.1.10) [none]: ~/.ssh/id_rsa
[+] SSH User of host (192.168.1.10) [ubuntu]: rancher
[+] Is host (192.168.1.10) a Control Plane host (y/n)? [y]: y
[+] Is host (192.168.1.10) a Worker host (y/n)? [n]: y
[+] Is host (192.168.1.10) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (192.168.1.10) [none]:
[+] Internal IP of host (192.168.1.10) [none]:
[+] Docker socket path on host (192.168.1.10) [/var/run/docker.sock]:
[+] SSH Address of host (2) [none]: 192.168.1.20
[+] SSH Port of host (2) [22]:
[+] SSH Private Key Path of host (192.168.1.20) [none]:  ~/.ssh/id_rsa
[+] SSH User of host (192.168.1.20) [ubuntu]: rancher
[+] Is host (192.168.1.20) a Control Plane host (y/n)? [y]: y
[+] Is host (192.168.1.20) a Worker host (y/n)? [n]: y
[+] Is host (192.168.1.20) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (192.168.1.20) [none]:
[+] Internal IP of host (192.168.1.20) [none]:
[+] Docker socket path on host (192.168.1.20) [/var/run/docker.sock]:
[+] SSH Address of host (3) [none]: 192.168.1.30
[+] SSH Port of host (3) [22]:
[+] SSH Private Key Path of host (192.168.1.30) [none]:  ~/.ssh/id_rsa
[+] SSH User of host (192.168.1.30) [ubuntu]: rancher
[+] Is host (192.168.1.30) a Control Plane host (y/n)? [y]: y
[+] Is host (192.168.1.30) a Worker host (y/n)? [n]: y
[+] Is host (192.168.1.30) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (192.168.1.30) [none]:
[+] Internal IP of host (192.168.1.30) [none]:
[+] Docker socket path on host (192.168.1.30) [/var/run/docker.sock]:
[+] Network Plugin Type (flannel, calico, weave, canal) [canal]: flannel
[+] Authentication Strategy [x509]:
[+] Authorization Mode (rbac, none) [rbac]:
[+] Kubernetes Docker image [rancher/hyperkube:v1.18.3-rancher2]:
[+] Cluster domain [cluster.local]:
[+] Service Cluster IP Range [10.43.0.0/16]:
[+] Enable PodSecurityPolicy [n]:
[+] Cluster Network CIDR [10.42.0.0/16]:
[+] Cluster DNS Service IP [10.43.0.10]:
[+] Add addon manifest URLs or YAML files [no]: 

官方示例cluster.yaml

指定名称创建配置文件

rke config --name cluster.yml

创建空的cluster.yml

如果需要空的cluster.yml模板,可以使用该–empty参数生成空模板。

rke config --empty --name cluster.yml

仅打印cluster.yml

您可以使用–print参数将生成的配置打印到stdout,而不是创建文件。

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文件与运行该命令的目录位于同一目录中。

./rke_linux-amd64 up

在创建Kubernetes集群时会有日志语句。

[root@node01 ~]# ./rke_linux-amd64 up
INFO[0000] Running RKE version: v1.1.3
INFO[0000] Initiating Kubernetes cluster
INFO[0000] [certificates] GenerateServingCertificate is disabled, checking if there are unused kubelet certificates
INFO[0000] [certificates] Generating admin certificates and kubeconfig
INFO[0000] Successfully Deployed state file at [./cluster.rkestate]
INFO[0000] Building Kubernetes cluster
INFO[0000] [dialer] Setup tunnel for host [192.168.1.30]
INFO[0000] [dialer] Setup tunnel for host [192.168.1.10]
INFO[0000] [dialer] Setup tunnel for host [192.168.1.20]
。。。
INFO[0101] Finished building Kubernetes cluster successfully

当最后一行显示Finished building Kubernetes cluster successfully表示集群已部署完成。作为Kubernetes创建过程的一部分,已创建并编写了一个kubeconfig文件,该文件kube_config_cluster.yml用于与Kubernetes集群进行交互。 如果您使用了不同的cluster.yml文件名,则kube配置文件将以kube_config_<RKE_FILE_NAME>.yml命名

遇到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

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl

使用RKE创建Kubernetes集群时,RKE会在本地目录中创建一个包含认证信息的配置文件kube_config_rancher-cluster.yml,以使用kubectl或helm等工具连接到新集群。

您可以将此文件复制到$HOME/.kube/config或者如果您正在使用多个Kubernetes集群,请将KUBECONFIG环境变量设置为路径kube_config_rancher-cluster.yml。

mkdir $HOME/.kube/
cp kube_config_cluster.yml $HOME/.kube/config

测试您的连接,看看是否可以返回节点列表。
kubectl get nodes

关于部署报错

RKE部署报错–docker版本不支持

  • 更换版本
    docker安装指定版本

RKE部署Kubernetes集群相关推荐

  1. 使用Rancher的RKE快速部署Kubernetes集群

    简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163). 先在Windows机器上,将rke_linu ...

  2. 使用Kubespray部署Kubernetes集群

    Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具.项目地址:https://github.com/kubernet ...

  3. 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群

    容器编排技术 -- 使用Minikube 部署 Kubernetes 集群 单机部署 创建Kubernetes cluster(单机版)最简单的方法是minikube: 首先下载kubectl cur ...

  4. 部署Kubernetes集群(二进制 v1.18.8版)

    第一章 kubernetes 功能介绍 · kubernetes 从入门到实践 · 看云 二进制 部署Kubernetes集群 组件版本 组件 版本 二进制包下载地址 备注 centos 7.8.20 ...

  5. ② kubeadm快速部署Kubernetes集群

    文章目录 1. 安装要求 2. 目标 3. 准备环境 4. 所有节点安装Docker/kubeadm/kubelet 4.1 安装Docker(以一台为例,其他相同) 4.2 添加kubernetes ...

  6. 【云原生 · Kubernetes】部署Kubernetes集群

    [云原生 · Kubernetes]搭建Harbor仓库 接着上次的内容,后续来了! 在master节点执行脚本k8s_master_install.sh即可完成K8S集群的部署,具体步骤参考如下(1 ...

  7. Kubernetes---通过Ansible自动化快速部署Kubernetes集群

    Kubernetes-通过Ansible自动化快速部署Kubernetes集群 目录 Kubernetes-通过Ansible自动化快速部署Kubernetes集群 一.安装ansible 二.环境准 ...

  8. 部署kubernetes集群

    在本例中使用三台机器来部署kubernetes集群 172.16.36.50 master 172.16.36.51 cti-1 172.16.36.54 cti-4 关闭三台机器的防火墙 syste ...

  9. 部署Kubernetes集群(二进制 v1.18.5版)

    文章目录 一.Kubernetes的基本知识 1. 安装要求 2. 系统初始化配置 二.部署Etcd集群 2.1 准备cfssl证书生成工具 2.2 生成Etcd证书 2.2.1 自签证书颁发机构(C ...

最新文章

  1. 浅析React之事件系统(二)
  2. MySQL中有哪些锁?
  3. java翻译smali,请各位好人帮我翻译Java成smali(没有false)
  4. 如何用jsp连接mysql_如何用jsp连接mysql数据库
  5. 试卷代号6098计算机应用基础,2231电大《Visual Basic程序设计》试题和答案200507
  6. 微软TypeScript 3.0重磅发布!扶我起来,我还学得动
  7. 批处理作业调度问题 ——回溯法详解
  8. Remixer-谷歌的UI参数动态修改框架
  9. Arduino IDE和ArduBlock 的下载安装
  10. Grafana全面瓦解
  11. Android常见界面布局(详细介绍)
  12. 创建新的apple id_新的Apple Maps与Google Maps:哪个适合您?
  13. Bing必应搜索引擎打开新标签默认页的修改
  14. RFC(请求注解)--各种协议-标准
  15. 快速查毒及电脑防毒的解决方案
  16. 东北财经有计算机系吗,东北财经大学计算机科学与技术专业要学哪些课程,好学吗?...
  17. 读不完《程序员修炼之道》,至少可以读完这70条
  18. 微信小程序使用腾讯地图进行路线规划,坐标转地址,逆地理编码,计算目的地跟自身定位的距离
  19. c语言编写计算机软件,基于C语言的计算机软件编程分析.doc
  20. itext生成页眉页脚

热门文章

  1. 电脑桌面文件夹突然消失了怎么找回
  2. Pyart学习笔记:风场模拟
  3. 王者荣耀体验服服务器维护,王者荣耀
  4. 通辽智慧城市建设总体规划和顶层设计专家评审会召开
  5. scrapy爬取某宝心得
  6. [转贴]大量.net学习资源
  7. 系统日志分析 之 日志的采集与查看
  8. 计算机主机usb设备,手把手教你电脑出现无法识别usb设备怎么办
  9. java面试题,各大企业常见的java笔试题之九
  10. OpenCV3.3人脸识别模块的API的变化