• kubernetes运用


    1:kubernetes基本介绍

    kubernetes 是一个开源的容器集群管理系统,K8s用于容器化应用程序的部署 扩展和管理,提供容器编排 资源调度 弹性伸缩 部署管理  服务发现等一系列功能。

    kebernetes的特性

        @自我修复  在节点故障的时候重新启动失败的容器,保证预期的副本数量,杀死监控检查失败的容器,并且在未准备好之前,不会处理客户端的请求,保证线上服务不会中断。

       @弹性伸缩 使用命令 UI或者基于CPU的使用情况快速扩容和收缩应用程序实例,保证应用业务在高峰器并发的高可用性,业务低峰期收回资源,以最小成本应用资源。

       @自动部署和回滚 k8s为各个容器提供统一访问的入口(内部IP地址和一个DNS名称)并且负载均衡关联的所有容器,使的用户无需考虑容器IP问题。

       @机密和配置管理  管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像中,提高敏感数据安全性。并可以将一些存储在K8s上,方便应用程序使用。

       @存储编排, 挂载外部存储系统,无论俩只本地存储,公有云还是网络存储都作为集群资源的一部分使用,极大提高存储使用灵活性。

       @批处理  提供一次性任务 定时任务;满足批量数据处理和分析的场景。

    kubernetes集群架构与组件

       MASTER 组件

    kube-apiserver  集群的统一入口,各个组件协调者,以restful API 提供接口服务,所有对象资源的增删改查和监听工作都交给apiserver处理后提交给etcd存储

    kube-controller-manager  处理集群中常规后台任务,一个资源对应一个控制器,而controllermanager 就是负责管理这些控制器的

    kube-scheduler 根据调度算法为新创建的POD选择一个node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

    etcd 分布式键值存储系统,用于博爱u才能集群状态数据,比如pod server 等对象信息。

      node组件

    kubelet 是master 在node节点上的agent 管理本机运行容器的生命周期,比如创建容器,pod 挂载数据卷,下载 secret  获取容器和节点状态等工作,kubelet将每个pod转换成一组容器。

    kube-proxy 在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作

    docker或rocket  容器引擎  运行容器

    2:kubernetes核心概念

    pod 最小部署单元   一组容器的集合  一个POD中的容器共享网络命名空间 pod是短暂的。

    controllers    replicaset: 确保预期的pod副本数量

                         deployment   无状态应用部署

                         statefulset:  有状态应用部署

                         daemonset:确保所有的node运行同一个pod

                         job:  一次性任务

                         cronjob:定时任务

    service       防止pod失联

                       定义一组pod的访问策略

                       label   标签,附加到某个资源上,用于关联对象  查询和筛选

                       namespace:命名空间,将对象逻辑上分开

    3:kubernetes的部署

    1:环境准备
    192.168.88.20 master
    192.168.88.21 node1
    192.168.88.22 node2

    hostname master && hostnamectl set-hostname master
    hostname node1 && hostnamectl set-hostname node1
    hostname node2 && hostnamectl set-hostname node2

    2:关闭防火墙和selinux 交换分区
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config

    swapoff -a
    sed -i '/swap/d' /etc/fstab

    3:修改hosts文件
    echo "192.168.88.20 master
    192.168.88.21 node1
    192.168.88.22 node2" >> /etc/hosts

    4:同步时间(正式环境不用执行该命令)
    yum install ntpdate -y
    ntpdate time.windows.com

    5:设置DNS
    echo "nameserver 192.168.88.2" > /etc/resolv.conf
    systemctl restart network

    6:创建/etc/sysctl.d/k8s.conf
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF

    sysctl --system

    6:安装docker
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum -y install docker-ce-18.06.1.ce-3.el7
    systemctl start docker && systemctl enable docker
    docker --version

    #7:配置kubernetes阿里云镜像
    #echo "[kubernetes]
    #name=Kubernetes
    #baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    #enabled=1
    #pgcheck=1
    #repo_gpgcheck=1
    #gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    # https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg" > /etc/yum.repos.d/kubernetes.repo

    8:添加阿里云YUM软件源
    cat << EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF

    8:安装kubeadm kubelet kubectl
    yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
    systemctl enable kubelet && systemctl start kubelet

    #配置kubelet
    #echo "KUBELET_ EXTRA_ ARGS="--fail-swap-on=false" > /etc/sysconfig/kubelet
    #systemctl restart kubelet.service && systemctl enable kubelet.service


    ***********************************************前面的命令需要在master和node节点都要执行*****************************
    9:安装master节点
    kubeadm init --kubernetes-version=1.15.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.88.20
    --image-repository registry.aliyuncs.com/google_containers
    --service-cidr=10.1.0.0/16 (国内执行这个)

    kubeadm init --kubernetes-version=1.15.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.88.20 (国外执行这条命令)
    ###以上命令根据情况选择其中一条进行执行即可

    成功后会生成node节点加入集群的命令(node节点执行该命令)
    kubeadm join 192.168.88.20:6443 --token p39oez.dx47m0rpocixulf9
    --discovery-token-ca-cert-hash sha256:3176b7ee2810f28c810d27c9f55be52e5845302fc91f4ee026af2b8a9a34fdb1


    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    10:安装pod网络插件
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    11:查看k8s的节点情况(在主节点上)
    kubectl get cs
    kubectl get nodes
    kubectl get pods -n kube-system

    以上部署表示单个主master节点集群安装部署好

    3:安装kubernetes dashboard

  • 相关阅读:
    [洛谷P4725]【模板】多项式对数函数
    [洛谷P4841]城市规划
    [洛谷P4346][CERC2015]ASCII Addition
    [洛谷P3978][TJOI2015]概率论
    [洛谷P4656][CEOI2017]Palindromic Partitions
    [洛谷P4889]kls与flag
    [洛谷P3810]【模板】三维偏序(陌上花开)
    [洛谷P2613]【模板】有理数取余
    [bzoj4945][Noi2017]游戏
    [洛谷P4151][WC2011]最大XOR和路径
  • 原文地址:https://www.cnblogs.com/will--1213/p/11926385.html
Copyright © 2020-2023  润新知