zoukankan      html  css  js  c++  java
  • 使用Rancher的RKE快速部署Kubernetes集群

    简要说明:

    本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163)。

    先在Windows机器上,将rke_linux-amd64从github上下载下来,重新命名为rke ,编辑好cluster.yml集群部署文件,使用putty提供的pscp命令,将文件上传到3.161机器上。在3.161机器上,执行rke命令,将集群部署到3.162和3.163机器上。

    只要环境配置正确,部署非常快,整个集群5分钟搞定。

    准备工作:

    # 1、Ubuntu 16.04.3 LTS + Docker 1.12.6 系统安装、网络基础设置

    # 2、将普通用户加入到Docker组。(sudo reboot重启机器才能生效)

    sudo usermod -aG docker catty

    sudo reboot

    # 3、启用cgroup内存和Swap限额,修改/etc/default/grub 配置文件,修改/增加两项:

    GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"

    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

    # 更新grub,重启系统后生效

    sudo update-grub

    sudo reboot

    # 4、永久禁用交换分区,直接修改/etc/fstab文件,注释掉swap项

    sudo vi /etc/fstab

    # 5、修改/etc/hosts主机名文件,设置127.0.0.1 localhost主机名

    # 6、禁用SELinux,Ubuntu默认未安装,无需设置。

    # *可以先安装selinux工具包,然后使用getenforce工具查看SELinux状态。

    sudo apt install selinux-utils

    sudo getenforce

    # 7、启用ipv4转发。Ubuntu默认已启用,无需设置。

    # 可以查看内核参数文件 /proc/sys/net/ipv4/ip_forward ,值为1,表示启用。

    # 也可以在/etc/sysctl.conf配置文件中强制指定 net.ipv4.ip_forward=1,重启生效。

    # 8、关闭ufw防火墙,Ubuntu默认未启用,无需设置。手工关闭UFW:

    sudo ufw disable

    # 9、使用配置文件中的部署用户,建立ssh单向通道,在RKE所在机器到Kubernetes集群机器,建立单向免密登录(即通道)

    catty@192.168.3.161: ssh-keygen  #三次回车,生成ssh公钥和私钥文件

    catty@192.168.3.161: ssh-copy-id catty@192.168.3.162  #将公钥分发给162机器

    catty@192.168.3.161: ssh-copy-id catty@192.168.3.163  #将公钥分发给163机器

    # 注意:不要使用sudo ssh-copy-id ,这样会变成root用户登录。

    # 验证是否可以直接免密登录:

    catty@192.168.3.161: ssh 192.168.3.162

    exit

    catty@192.168.3.161: ssh 192.168.3.163

    exit

    # 10、修改cluster.ym集群部署配置文件,避免使用gcr.io镜像,可用的文件附后

    安装部署:

    # 11、将rke工具下载下来,通过putty的pscp命令,拷贝到161机器的/home/catty目录下,

    # 将RKE程序和cluster.yml配置文件放到Windows机器上的putty目录下:

    pscp rke 192.168.3.161:/home/catty

    pscp cluster.yml 192.168.3.161:/home/catty

    # 到161的/home/catty目录下,增加RKE文件的可执行权限,

    chmod +x rke

    # 一切就绪,在161机器上,执行部署命令

    ./rke up --config cluster.yml

    # 结束。

    可用的配置文件cluster.yml:

    ---

    auth:

      strategy: x509

      options:

        foo: bar

    # supported plugins are:

    # flannel

    # calico

    # canal

    # weave

    #

    # If you are using calico on AWS, use the network plugin config option:

    # 'cloud_provider: aws'

    network:

      plugin: flannel

      options:

         flannel_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/flannel

         flannel_cni_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/flannel-cni

    nodes:

      - address: 192.168.3.162

        user: catty

        role: [controlplane, etcd]

        ssh_key_path: ~/.ssh/id_rsa

      - address: 192.168.3.163

        user: catty

        role: [worker]

        ssh_key_path: ~/.ssh/id_rsa

    #  - address: 192.168.3.164

    #    user: catty

    #    role: [worker]

    #    ssh_key_path: ~/.ssh/id_rsa

    services:

      etcd:

        image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/etcd:latest

      kube-api:

        image: rancher/k8s:v1.8.3-rancher2

        service_cluster_ip_range: 10.233.0.0/18

        pod_security_policy: false

        extra_args:

          v: 4

      kube-controller:

        image: rancher/k8s:v1.8.3-rancher2

        cluster_cidr: 10.233.64.0/18

        service_cluster_ip_range: 10.233.0.0/18

      scheduler:

        image: rancher/k8s:v1.8.3-rancher2

      kubelet:

        image: rancher/k8s:v1.8.3-rancher2

        cluster_domain: cluster.local

        cluster_dns_server: 10.233.0.3

        infra_container_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/pause-amd64:3.0

        command: --fail-swap-on=false

      kubeproxy:

        image: rancher/k8s:v1.8.3-rancher2

    system_images:

      alpine: alpine:latest

      nginx_proxy: rancher/rke-nginx-proxy:0.1.0

      cert_downloader: rancher/rke-cert-deployer:0.1.0

      kubedns_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-kube-dns-amd64:1.14.5

      dnsmasq_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-dnsmasq-nanny-amd64:1.14.5

      kubedns_sidecar_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-sidecar-amd64:1.14.5

      kubedns_autoscaler_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/cluster-proportional-autoscaler-amd64:1.0.0

    # all addon manifests MUST specify a namespace

    addons: |-

        ---

        apiVersion: v1

        kind: Pod

        metadata:

          name: my-nginx

          namespace: default

        spec:

          containers:

          - name: my-nginx

            image: nginx

            ports:

            - containerPort: 80

    运行截图:

    01-执行rke命令,部署Kubernetes集群1

    01-执行rke命令,部署Kubernetes集群1

    02-执行rke命令,部署Kubernetes集群2

    02-执行rke命令,部署Kubernetes集群2

    03-执行rke命令,部署Kubernetes集群3

    03-执行rke命令,部署Kubernetes集群3

    04-执行rke命令,部署Kubernetes集群4

    04-执行rke命令,部署Kubernetes集群4

    参考链接:

    使用Rancher的RKE部署Kubernetes要点

    http://blog.csdn.net/csdn_duomaomao/article/details/79317846

    RKE快速上手指南:开源的轻量级K8S安装程序

    https://www.cnrancher.com/an-introduction-to-rke/

    免费视频培训:如何安装使用RKE

    http://www.itdks.com/liveevent/detail/8343

    RKE 简介

    https://github.com/rancher/rke

    RKE工具下载页面

    https://github.com/rancher/rke/releases/

    RKE cluster.yml 文件说明

    https://github.com/rancher/rke/blob/master/cluster.yml

  • 相关阅读:
    Angular随笔第一课
    web前端面试集锦(自己搜集的,如有错误请不吝赐教)
    菜单选项卡-2中方法加载选项卡的内容
    dialog使用方法(同一页面,调用一个js代码,实现多个不同样式的弹窗)
    JAVA中对象赋值以及前拷贝,深拷贝等~~
    基类指针指向派生类对象
    JAVA中方法的参数传递(转)
    java和C++的const 和 final 的区别
    JAVA--虚函数,抽象函数,抽象类,接口
    libdash编译中遇到的问题及解决方案
  • 原文地址:https://www.cnblogs.com/rancher-maomao/p/8448502.html
Copyright © 2011-2022 走看看