重学kubernetes(一):使用rancher安装kubernetes

前言

实际使用kubernetes做微服务开发也有一段时间了,发觉自己对于kubernetes一些概念还是理解不够透彻,都说温故而知新,所以准备重新开始学习kubernetes。
首先当然是需要部署安装一个kubernetes环境了。

kubernetes介绍

Kubernetes 是由google,红帽,IBM发起的开源的容器编排项目,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。该项目托管在 CNCF。

开发工具

  • kubectl: Kubernetes 命令行工具,可以对 Kubernetes 集群运行命令,可以使用 kubectl 来部署应用、监测和管理集群资源以及查看日志,可安装在OSX,linux,windows 平台。开发友好的工具,基本开发调试部署kubernetes应用都会使用这个工具
  • kind: 能够在本地计算机上运行 Kubernetes。 kind 要求安装并配置好 Docker
  • minikube: 与 kind 类似,minikube 是一个工具, 能在本地运行 Kubernetes。 minikube 在本地的个人计算机(包括 Windows、macOS 和 Linux PC)运行一个单节点的 Kubernetes 集群,以便尝试 Kubernetes 或者开展每天的开发工作。
  • kubeadm: kubeadm 可以创建和管理 Kubernetes 集群。 该工具能够执行必要的动作并用一种用户友好的方式启动一个可用的、安全的集群。

k8s企业发行版

  • EKS(Amazon Elastic Kubernetes Service): EKS是一项托管服务,于 2018 年 6 月公开提供,用于在 AWS 上运行 Kubernetes。EKS是云上的收费平台。

eks

  • AKS(Azure Kubernetes Service): Azure Kubernetes 服务 (AKS) 是一种托管 Kubernetes 解决方案,由 Microsoft 于 2018 年推出。AKS是云上的收费平台。

aks

  • GKE(Google Kubernetes Engine): Kubernetes 本身是作为 Google 的内部项目开始的,因此他们在 2014 年率先提供托管 Kubernetes 解决方案,即 Google Kubernetes Engine (GKE),这是有道理的。GKE是云上的收费平台。

gke

  • Openshift: 红帽提供的kubernetes发行版,openshift原先作为paas平台提供服务,后续改换为kubernetes内核的云平台。Openshift是开源的平台,由红帽提供企业支持。

openshift

  • Rancher: 2014年由CoreOS提出的容器化解决方案的paas平台,后续2016年切换平台内核到kubernetes,提供完全免费和开源的kubernetes集群管理服务。

rancher

如果只是个人本地学习kubernetes概念,那么使用minikube, kind安装本地k8s集群已经够了,也可以使用kubeadm安装kubernetes体验完整的kubernetes,但是个人还是希望多学习一下企业kubernetes集群的功能,所以我选择使用rancher提供的kubernetes集群体验安装和部署。

使用rancher安装kubernetes集群

rancher支持在多种云环境下部署,同时也支持虚拟机部署,这里我选择手工在虚拟机部署

  • 在 AWS 上快速部署
  • 在 DigitalOcean 上快速部署
  • 在 Azure 上快速部署
  • 在 GCP 上快速部署
  • 使用 Vagrant 进行快速部署
  • 虚拟机手动部署

    安装准备

    为了部署rancher集群,我准备了四台腾讯云的轻量服务器集群作为k8s集群的master和node节点。

    安装步骤:

  • 运行 Linux 主机
  • 安装 Rancher 2.x
  • 登录 Rancher 2.x 并配置初始设置
  • 创建业务集群

运行 Linux 主机

需要运行一台 Linux 主机,Rancher 支持的 Linux 主机类型包括:

  • 云端虚拟机(如 Amazon ECS、阿里云 ECS、腾讯云 CVM、华为云 ECS 等)
  • 本地数据中心的虚拟机
  • 裸金属服务器(Bare Metal Server)

这里我使用腾讯云轻量服务器:
server

安装 Rancher 2.x

登录到主机,然后使用 shell 安装 Rancher。
执行以下命令:

1
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher

docker-run
登录准备好的域名查看rancher dashboard:
rancher-login

登录 Rancher 2.x 并配置初始设置

登录 Rancher登录以后,需要完成一些一次性的配置。打开浏览器,输入主机的 IP 地址:https://<SERVER_IP>,我这里是 https://x.x.x.x
首次登录时,请按照页面提示设置登录密码和server url,设置 Rancher Server URL。URL 既可以是一个 IP 地址,也可以是一个主机名称。需要确保在集群内添加的每个节点都可以连接到这个 URL。如果使用的是主机名称,请保证主机名称可以被节点的 DNS 服务器成功解析。:
first-login

创建业务集群

完成安装和登录 Rancher 的步骤之后,使用以下步骤,在 Rancher 中创建第一个 Kubernetes 集群。可以使用自定义集群选项,使用的任意 Linux 主机(云主机、虚拟机或裸金属服务器)创建集群。

  • 访问集群页面,单击添加集群。

cluster-management
create-cluster

  • 选择已有节点选项。
    custom-cluster
  • 输入集群名称,跳过集群角色和集群选项,单击下一步:
    clsuter-name

  • 勾选主机选项 - 角色选择中的所有角色: Etcd、 Control 和 Worker。可选: Rancher 会自动探查用于 Rancher 通信和集群通信的 IP 地址。您可以通过主机选项 > 显示高级选项中的公网地址和内网地址指定 IP 地址。跳过主机标签参数,因为对快速入门来说,这部分的参数不太重要。这里我选择一台2C4G的机器作为etcd和controller节点,2台作为worker节点
    node_options

  • 复制代码框中的命令。登录 Linux 主机,打开命令行工具,粘贴命令,单击回车键运命令。运行完成后,回到 Rancher 界面,单击完成。
    node_cmd
    run_log1
    run_log2

结果

集群创建中,并分配给集群状态为Provisioning,Rancher 正在建立中:
installing

只需要等集群的状态更新为Active后访问它。Active集群被分配了两个项目:Default项目:包含default命名空间;System项目:包含cattle-system、ingress-nginx、kube-public和kube-system等命名空间。
如下图,等待一段时间后,我们的rancher管理的k8s集群就建立好了:
success

好的,重学kubernetes的第一步完成了! 准备个人的kubernetes集群了!