基于kubernetes构建Docker集群管理详解

  1. 云栖社区>
  2. 博客>
  3. 正文

基于kubernetes构建Docker集群管理详解

科技小能手 2017-11-12 15:47:00 浏览1013
展开阅读全文

一、环境部署
1、平台版本说明
    1)Centos7.0 OS
    2)Kubernetes V0.6.2
    3)etcd version 0.4.6
    4)Docker version 1.3.2

2、平台环境说明

192.168.1.20  kubernetes etcd

192.168.1.21  kubernetes docker

192.168.1.22  kubernetes docker

192.168.1.23  kubernetes docker





wKiom1muZjWjQ8QQAAQXYH6zf9M753.png


在这张系统架构图中,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务。

Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。

每次个节点上当然都要运行Docker。Docker来负责所有具体的映像下载和容器运行。

Kubernetes主要由以下几个核心组件组成:

  • etcd保存了整个集群的状态;

  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;

  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

  • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;

  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);

  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;


3、环境安装
    1)系统初始化工作(所有主机)
    系统安装-选择[最小化安装]

    # yum -y install wget ntpdate bind-utils lrzsz vim 

    # wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-6.noarch.rpm    

    # yum update

 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙(熟悉度更高,非必须)。
    1.1、关闭firewall:

    # systemctl stop firewalld.service #停止firewall
    # systemctl disable firewalld.service #禁止firewall开机启动

    

    2 )安装Etcd Kubernetes(192.168.1.20主机)

    #yum install etcd kubernetes -y

    

    3 )安装Kubernetes docker(192.168.1.21,192.168.1.22,192.168.1.23主机)

    #yum install  kubernetes docker -y



4、启动服务

    1) master 启动服务(192.168.1.20)

    #systemctl daemon-reload
    #systemctl enable kube-apiserver.service
    #systemctl start kube-apiserver.service

    #systemctl enable kube-controller-manager
    #systemctl start kube-controller-manager

    #systemctl enable kube-controller-manager
    #systemctl start kube-controller-manager

    ####通过systemctl status <service>  查看服务是否启动成功

    wKiom1m2D-_AupwzAABMIazlVLw208.png

此处修改过的配置文件

    

    #cat /etc/kubernetes/config | grep -v ^# | grep -v ^$

    KUBE_LOGTOSTDERR="--logtostderr=false"            #设置为false表示将日志写入文件
    KUBE_LOG_LEVEL="--v=2"                                        #日志级别
    KUBE_ALLOW_PRIV="--allow-privileged=false"        #如果设置为true,则kubernetes将允许pod中运行拥有系统特权的容器应用
    KUBE_MASTER="--master=http://192.168.1.20:8080"        


    #cat /etc/kubernetes/apiserver | grep -v ^# | grep -v ^$

    KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"        #apiserver绑定主机的非安全ip地址
    KUBE_API_PORT="--port=8080"            #apiserver绑定主机的非安全端口号,默认8080  

    KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.20:2379"
    KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"    #server地址段,不能与实际ip冲突
    KUBE_ADMISSION_CONTROL="--admission-                      control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"            #kubernetes集群的准入控制设置
    KUBE_API_ARGS="" 

    

    

    2) slave启动服务 (192.168.1.21,192.168.1.22,192.168.1.23)

    #systemctl daemon-reload 
    #systemctl enable kubelet
    #systemctl start kubelet
    #systemctl enable kube-proxy
    #systemctl start kube-proxy

    wKiom1m2EA6DAbwgAAA8Iu3nxks954.png

        

     #cat /etc/kubernetes/kubelet | grep -v ^# | grep -v ^$

    KUBELET_ADDRESS="--address=127.0.0.1"
    KUBELET_HOSTNAME="--hostname-override=192.168.1.21"        #master里获取的minion名字
    KUBELET_API_SERVER="--api-servers=http://192.168.1.20:8080"            
    KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7    /podinfrastructure:latest"
    KUBELET_ARGS="--logtostderr=true --log-dir=/var/log/kubernetes --v=2"


    使用kubectl get nodes 查看已经加进来的node

    wKioL1m2OY_hsJ6TAAAQPAVJLoA224.png



本文转自 转身撞墙角 51CTO博客,原文链接:http://blog.51cto.com/chentianwang/1957398

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注