• Kubernetes之一安装


    在容器时代,容器的编排和管理是一项非常复杂的任务,常用的三个流派:
    1. Docker compose,Docker swam,Docker machine号称Docker管理三剑客
    2. Apahce Mesos, marathon
    3. Google Kubernetes
    其中,Google的Kubernetes结合过去十年以每年删除,增加10亿量级的容器的实际经验,一经推出,立即在Docker的市场受到广泛的欢迎。

    Kubernetes特性

    1. 自动装箱
    2. 自我修复
    3. 自动水平扩展
    4. 自动服务发现和负载均衡
    5. 自动发布和回滚
    6. 密钥和配置管理(配置中心)
    7. 存储卷动态编排
    8. 批处理运行
    

    Kubernetes架构


    Kubernetes集群, 有中心节点和node节点组成。

    Master节点

    Master 提供API和scheduler(资源请求的多维度)至少三个节点
    1. API
    2. controler:控制器,在本地loop,周期性探测,检查容器的健康性(按用户定义的)
    3. controler admin:控制器管理器,做冗余
    

    Node节点

    Node节点运行docker, node之上有一个软件 keeplight来监控运行在docker上的状态。如果一个docker下线,需要重启一个docker,监控docker的健康状态。
    

    Pod

    在Kubernetes中,pod是容器的外壳,给docker做了一层封装。pod是K8s调度的最小单元。一个pod可以包括多个docker,共享网络资源,存储卷, 类似模拟传统的虚拟机。一般来说,一个pod只放一个容器。如果多个,一个主docker,多个辅助docder,辅助主docker工作实现更多的功能。pod是Kubernetes的原子单元
    

    Kubernetes安装部署

    传统部署

    所有的组件部署为系统级守护进程
    

    Kubeadm部署

    Master部署在pod上(静态,也能动态),node上的proxy也运行为pod,以系统进程运行flannel
    

    Kubeadm部署详细步骤

    一、前提:

    1、各节点时间同步;
    2、各节点主机名称解析:dns OR hosts;
    3、各节点iptables及firewalld服务被disable;
    

    二、初始化主节点

    1. 准备三台虚拟机(Centos7.5,一台作为Master,另外两台作为node1和node2安装相关的程序包
    2. disable selinux, iptables
    3. 配置kubernets yum
        [kubernetes]
        name=Kubernetes
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
        gpgcheck=0
        gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        enabled=1
        从https://mirrors.aliyun.com/kubernetes/yum/doc/下载rpm-package-key.gpg   
        同时配置好Docker的repo
    4. 在三台虚拟机上yum install docker-ce kubelet kubeadm kubectl
    5. docker需要在一下载,可能需要配置代理
        vim /usr/lib/systemd/system/docker.service
        Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
        安装完成之后删除此配置,有可以会影响后续别的docker image下载速度
    6. systemctl enable kubelet && systemctl enable docker && systemctl start docker && systemctl  daemon-reload
    7. 更改/proc/sys/net/bridge/bridge-nf-call-iptables 和bridge-nf-call-ip6tables 为1
    8. vim /etc/sysconfig/kubelet
         KUBELET_EXTRA_ARGS="--fail-swap-on=false"
    9. 初始化master节点:
        # kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
    10. 初始化kubectl(此安装是以root,在实际工作环境中,请初始化完成之后的提示用普通用户创建)
          # mkdir -p $HOME/.kube
          # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        测试:
        # kubectl get componentstatus
        # kubectl get nodes
    11. 添加flannel网络附件
        # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    12. 验正master节点已经就绪
        # kubectl get nodes
    

    三、添加节点到集群中

    1、配置docker Unit File中的Environment变量,定义其HTTPS_PROXY,或者事先导入所需要的镜像文件;
            # systemctl start docker.service
            # docker load node-component-imgs.gz 
    2、编辑kubelet的配置文件/etc/sysconfig/kubelet,设置其忽略Swap启用的状态错误,内容如下:
            KUBELET_EXTRA_ARGS="--fail-swap-on=false"
    3、设定docker和kubelet开机自启动:
            # systemctl enable docker kubelet
    4、将节点加入第二步中创建的master的集群中,要使用初始化master节点提示的kubeadm join命令,而且要额外附加“--ignore-preflight-errors=Swap”选项;
    5、待加入完成后,在设置了kubectl的节点上验正节点的就绪状态:
            # kubectl get nodes
  • 相关阅读:
    [PCB设计] 1、硬件原理图设计规范(一)——基本原则
    [每日电路图] 8、三轴加速度计LIS3DH电路图及功耗等指标
    [安卓] 19、一个蓝牙4.0安卓DEMO
    [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法
    [异常解决] android studio检测不到手机的解决办法——ADB驱动自己安装
    [每日电路图] 7、设计一个PCB的流程及细节·总结——给外行的同学或刚入行的同学一个宏观鸟瞰电路板设计的大致流程的文章
    [专业名词·硬件] 2、DCDC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文
    mysql获取某个字段平均值方法AVG函数的使用
    Linux设置SSH隧道连接
    docker入门实例(转载)
  • 原文地址:https://www.cnblogs.com/liangjindong/p/9447279.html
Copyright © 2020-2023  润新知