• Kubernetes 集群:规划与搭建


    Kubernetes 集群环境:

    IP地址 主机名 角色 软硬件限制
    192.168.119.134 master1 deploy ,master1 ,lb1 ,etcd

    (1) CPU至少1核,内存至少2G
    (2) Linux 内核办版本至少3.10,使用 CentOS 7
    (3) Docker 版本至少 1.9 ,Etcd 版本至少 2.0

    192.168.119.135 master2 master2 ,lb2
    192.168.119.136 node1 etcd ,node
    192.168.119.137 node2 etcd ,node

    备注:

    (1) etcd:用来存储各个资源对象的状态及数据,etcd集群必须是奇数个节点(1,3,5,....)
    (2) master:用来管理node节点,这里部署两个master,是为了做高可用,做高可用需要配置一个VIP ( 虚拟IP ),这里会配置为:192.168.119.130
    (3) lb:负载均衡节点,安装 HAProxy + Keepalived
    (4) node:真正应用负载的节点,根据需要提升机器配置和增加节点
    (5) deploy:这个工具相当于RC的升级版,用来部署,控制Pod的数量,跟RC比较,最大的一个特点是可以知道Pod部署的进度
    (6) 本文参考:https://github.com/gjmzj/kubeasz

    准备工作:

    [root@localhost ~]$ yum install -y epel-release    # 四台机器都执行
    [root@localhost ~]$ yum update -y
    [root@localhost ~]$ iptables -F
    [root@localhost ~]$ setenforce 0
    [root@localhost ~]$ systemctl stop firewalld.service

    deploy节点配置:

    [root@localhost ~]$ yum install -y ansible git wget    # 会用ansible-playbook来部署其他节点
    [root@localhost ~]$ ssh-keygen                         # 生成密钥对,用于下发到各个节点机器,命令如下
    [root@localhost ~]$ for ip in 134 135 136 137; do ssh-copy-id 192.168.119.$ip; done
    [root@localhost ~]$ ansible all -m ping # 测试是否连通各个节点 [root@localhost
    ~]$ git clone https://github.com/gjmzj/kubeasz.git # 把k8s项目克隆到本地,里面有很多yml文件 [root@localhost ~]$ mv kubeasz/* /etc/ansible/ # 我们使用ansible-playbook来执行yml文件,从而部署k8s集群 [root@localhost ~]$ cd /usr/local/src/ [root@localhost src]$ tar xf k8s.1-11-6.tar.gz # k8s包下载地址:https://pan.baidu.com/s/1c4RFaA#list/path=%2F [root@localhost src]$ mv bin/* /etc/ansible/bin/

    配置 ansible 主机组:

    [root@localhost ~]$ /bin/cp /etc/ansible/example/hosts.m-masters.example /etc/ansible/hosts    # 要修改的地方如下
    [root@localhost ~]$ vim /etc/ansible/hosts 
    [deploy]
    192.168.119.134 NTP_ENABLED=no
    
    [etcd]
    192.168.119.134 NODE_NAME=etcd1
    192.168.119.136 NODE_NAME=etcd2
    192.168.119.137 NODE_NAME=etcd3
    
    [kube-master]
    192.168.119.134
    192.168.119.135
    
    [lb]
    192.168.119.134 LB_IF="ens33" LB_ROLE=master
    192.168.119.135 LB_IF="ens33" LB_ROLE=backup
    
    [kube-node]
    192.168.119.136
    192.168.119.137
    
    K8S_VER="v1.11"
    MASTER_IP="192.168.119.130"    # 注意这里填的是VIP(虚拟IP)

    安装 k8s 集群:

    [root@localhost ~]$ cd /etc/ansible/
    [root@localhost ansible]$ ansible-playbook 01.prepare.yml        # 创建证书及安装准备
    [root@localhost ansible]$ ansible-playbook 02.etcd.yml           # 安装etcd集群
    [root@localhost ansible]$ ansible-playbook 03.docker.yml         # 安装docker服务
    [root@localhost ansible]$ ansible-playbook 04.kube-master.yml    # 安装master节点
    [root@localhost ansible]$ ansible-playbook 05.kube-node.yml      # 安装node节点
    [root@localhost ansible]$ ansible-playbook 06.network.yml        # 部署集群网络
    [root@localhost ansible]$ ansible-playbook 07.cluster-addon.yml  # 安装集群插件

    查看 k8s 集群信息:

    [root@localhost ~]$ /opt/kube/bin/kubectl cluster-info              # 查看集群信息
    [root@localhost ~]$ /opt/kube/bin/kubectl get nodes                 # 查看集群的node节点
    [root@localhost ~]$ /opt/kube/bin/kubectl get componentstatus       # 查看集群状态
    [root@localhost ~]$ /opt/kube/bin/kubectl top node                  # 查看node节点使用资源的情况
    [root@localhost ~]$ /opt/kube/bin/kubectl top pod --all-namespaces  # 查看pod使用资源的情况

    测试 DNS:

    [root@localhost ~]$ /opt/kube/bin/kubectl run nginx --image=nginx --expose --port=80      # 创建 Nginx Service
    [root@localhost ~]$ /opt/kube/bin/kubectl run busybox --rm -it --image=busybox /bin/sh    # 进入 Nginx Service
    / # nslookup nginx.default.svc.cluster.local
    Server:         10.68.0.2
    Address:        10.68.0.2:53
    
    Name: nginx.default.svc.cluster.local
    Address: 10.68.21.154

    扩展内容:

    (1) 如何增加 Node 节点:https://github.com/gjmzj/kubeasz/blob/master/docs/op/AddNode.md
    (2) 如何增加 Master 节点:https://github.com/gjmzj/kubeasz/blob/master/docs/op/AddMaster.md
    (3) 如何升级集群:https://github.com/gjmzj/kubeasz/blob/master/docs/op/upgrade.md
    (4) 如何修改VIP:https://github.com/gjmzj/kubeasz/blob/master/docs/op/ChangeVIP.md
    (5) 如何备份与恢复集群:https://github.com/gjmzj/kubeasz/blob/master/docs/op/cluster_restore.md
    (5) 更多操作参考:https://github.com/gjmzj/kubeasz/tree/master/docs/op

        

  • 相关阅读:
    zz:android sharedpreferences用法
    Android viewHolder
    Python学习笔记~
    zz:Java多线程编程总结
    zz:Android 2.1 源码结构
    onSaveInstanceState的用法
    zz:如何学习Linux操作系统
    Python学习笔记II
    Python类型转换
    zz:Android应用程序基础
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10237627.html
Copyright © 2020-2023  润新知