• kubernetes架构部署


    平台环境:Centos 7.0

    一、架构模式

    二、核心服务

    Master

    1)etcd服务

      etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。etcd服务作为kubernetes集群的主数据库,在安装Kubernetes各服务之前需要先安装和启动。

    2)kube-apiserver

      APIserver负责对外提供RESTful的kubernetes API的服务,它是系统管理指令的统一接口,任何对资源的增删改查都要交给APIserver处理钴在交给etcd。

    3)schedule

      schedule负责调度Pod到合适的Node上。

    4)controller manager

      controller在kubernetes中担任资源控制器功能。

    Node

    kube-proxy:该模块实现了kubernetes中的服务发现和反向代理功能。kube-proxy支持TCP和UDP连接转发,默认基Round Robin算法将客户端流量转发到与service对应的一组后端pod.服务发现方面,kube-proxy使用etcd的watch机制监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从页保证了后端pod的IP变化不会对访问者造成影响。kube-proxy还支持session affinity。

    kublet:kublet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上的所有容器,但是如果容器不是通过kubernetes创建的,它并不会管理。本质上,它负责使Pod的运行状态与期望的状态一致。

    三、部署安装

     服务器分配

    master:192.168.56.155

    node1:192.168.56.163

    Master

    1、安装

    yum -y install etcd kubernetes-master

    2、配置etcd服务

    systemd服务文件:/usr/lib/systemd/system/etcd.service
    
    [Unit]
    Description=Etcd Server
    After=network.target
    
    [Service]
    Type=notify
    WorkingDirectory=/var/lib/etcd/
    EnvironmentFile=-/etc/etcd/etcd.conf
    User=root
    # set GOMAXPROCS to number of processors
    ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd --name="${ETCD_NAME}" --data-dir="${ETCD_DATA_DIR}" --listen-client-urls="${ETCD_LISTEN_CLIENT_URLS}""
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target


    服务配置文件:/etc/etcd/etcd.conf(修改这四项)

     ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
     ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
     ETCD_NAME="default"
     ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.155:2379"

    3、配置kube-apiserver

    systemd配置文件:/usr/lib/systemd/system/kube-apiserver.service
    
    [Unit]
    Description=Kubernetes API Server
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=network.target
    After=etcd.service
    Wants=etcd.service
    
    [Service]
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/apiserver
    User=root
    ExecStart=/usr/bin/kube-apiserver 
                $KUBE_LOGTOSTDERR 
                $KUBE_LOG_LEVEL 
                $KUBE_ETCD_SERVERS 
                $KUBE_API_ADDRESS 
                $KUBE_API_PORT 
                $KUBELET_PORT 
                $KUBE_ALLOW_PRIV 
                $KUBE_SERVICE_ADDRESSES 
                $KUBE_ADMISSION_CONTROL 
                $KUBE_API_ARGS
    Restart=on-failure
    Type=notify
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target


    服务配置文件:/etc/kubernetes/apiserver

    ###
    # kubernetes system config
    #
    # The following values are used to configure the kube-apiserver
    #

    # The address on the local server to listen to.
    KUBE_API_ADDRESS="--address=0.0.0.0"

    # The port on the local server to listen on.
    # KUBE_API_PORT="--port=8080"

    # Port minions listen on
    KUBELET_PORT="--kubelet-port=10250"

    # Comma separated list of nodes in the etcd cluster
    KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.56.155:2379"

    # Address range to use for services
    KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

    # default admission control policies
    KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

    # Add your own!
    KUBE_API_ARGS=""

    4、配置kube-scheduler.service

    systemd配置文件:/usr/lib/systemd/system/kube-scheduler.service
    
    [Unit]
    Description=Kubernetes Scheduler Plugin
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=etcd.service
    After=kube-apiserver.service
    Requires=etcd.service
    Requires=kube-apiserver.service
    
    [Service]
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/scheduler
    User=root
    ExecStart=/usr/bin/kube-scheduler 
                $KUBE_LOGTOSTDERR 
                $KUBE_LOG_LEVEL 
                $KUBE_MASTER 
                $KUBE_SCHEDULER_ARGS
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target


    服务配置文件:/etc/kubernetes/scheduler

     ###
     # kubernetes scheduler config

     # default config should be adequate

     # Add your own!
     KUBE_SCHEDULER_ARGS=""

    5、配置kube-controller-manager

    systemd配置文件:/usr/lib/systemd/system/kube-controller-manager.service
    
    [Unit]
    Description=Kubernetes Controller Manager
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=etcd.service
    After=kube-apiserver.service
    Requires=etcd.service
    Requires=kube-apiserver.service
    
    [Service]
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/controller-manager
    User=root
    ExecStart=/usr/bin/kube-controller-manager 
                $KUBE_LOGTOSTDERR 
                $KUBE_LOG_LEVEL 
                $KUBE_MASTER 
                $KUBE_CONTROLLER_MANAGER_ARGS
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target


    服务配置文件:/etc/kubernetes/controller-manager

     ###
     # The following values are used to configure the kubernetes controller-manager

     # defaults from config and apiserver should be adequate

     # Add your own!
     KUBE_CONTROLLER_MANAGER_ARGS=""

    6、启动服务

    for i in {"etcd.service","kube-apiserver.service","kube-scheduler.service","kube-controller-manager.service"};do systemctl enable $i;done
    
    for i in {"etcd.service","kube-apiserver.service","kube-scheduler.service","kube-controller-manager.service"};do systemctl start $i;done

    Node

    1、安装

    yum -y install kubernetes-node

     2、配置kubelet

    systemd配置文件:/usr/lib/systemd/system/kubelet.service
    
    [Unit]
    Description=Kubernetes Kubelet Server
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=docker.service
    Requires=docker.service
    
    [Service]
    WorkingDirectory=/var/lib/kubelet
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/kubelet
    ExecStart=/usr/bin/kubelet 
                $KUBE_LOGTOSTDERR 
                $KUBE_LOG_LEVEL 
                $KUBELET_API_SERVER 
                $KUBELET_ADDRESS 
                $KUBELET_PORT 
                $KUBELET_HOSTNAME 
                $KUBE_ALLOW_PRIV 
                $KUBELET_POD_INFRA_CONTAINER 
                $KUBELET_ARGS
    Restart=on-failure
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target


    服务配置文件:/etc/kubernetes/kubelet

     ###
     # kubernetes kubelet (minion) config

     # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
     KUBELET_ADDRESS="--address=127.0.0.1"

     # The port for the info server to serve on
     KUBELET_PORT="--port=10250"

     # You may leave this blank to use the actual hostname
     KUBELET_HOSTNAME="--hostname-override=nginx2"

     # location of the api-server
     KUBELET_API_SERVER="--api-servers=http://192.168.56.155:8080"

     # pod infrastructure container
     KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

     # Add your own!
     KUBELET_ARGS=""

    3、配置kube-proxy

    systemd配置文件:/usr/lib/systemd/system/kube-proxy.service
    [Unit]
    Description=Kubernetes Kube-Proxy Server
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=network.target
    
    [Service]
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/proxy
    ExecStart=/usr/bin/kube-proxy 
                $KUBE_LOGTOSTDERR 
                $KUBE_LOG_LEVEL 
                $KUBE_MASTER 
                $KUBE_PROXY_ARGS
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
    
    服务配置文件:vim /etc/kubernetes/proxy
    ###
    # kubernetes proxy config
    
    # default config should be adequate
    
    # Add your own!
    KUBE_PROXY_ARGS=""

    4、启动服务

    for i in {"etcd.service","kube-apiserver.service","kube-scheduler.service","kube-controller-manager.service"};do systemctl enable $i;done
    
    for i in {"etcd.service","kube-apiserver.service","kube-scheduler.service","kube-controller-manager.service"};do systemctl start $i;done

    四、检查

    [root@master kubernetes]# kubectl get nodes
    NAME      STATUS    AGE
    node1    Ready     3h

    文献:https://blog.csdn.net/chenmeng729970897/article/details/76269853

  • 相关阅读:
    qt Bearer
    vs2019 razor cshtml无故划红线的解决方法
    redis面试题
    腾讯云部署dockercompose minio分布式集群部署
    docker+minio 三分钟搞定详细版
    springboot整合minio(分部署存储)
    docker+ES 快速搭建,3分钟搞定
    蓝桥杯
    anaconda基本操作(Windows)
    猫狗识别
  • 原文地址:https://www.cnblogs.com/TaleG/p/9168062.html
Copyright © 2020-2023  润新知