• Docker实践(6)—CentOS7上部署Kubernetes


    Kubernetes架构

    Kubernetes的整体架构如下:

     NewImage

    Master为主控节点,上面运行apiserver,scheduler,controller-manager等组件。Minion相当于工作节点,上面运行kubelet,proxy,cAdvisor以及最重要的docker等组件。下面来实际部署一下这套集群管理工具。

    环境

    yy1  10.193.6.35

    yy2  10.193.6.36

    yy1作为master,yy2作为minion。

    # cat /etc/centos-release

    CentOS Linux release 7.0.1406 (Core)

    安装kubernetes

    # curl https://copr.fedoraproject.org/coprs/eparis/kubernetes-epel-7/repo/epel-7/eparis-kubernetes-epel-7-epel-7.repo -o /etc/yum.repos.d/eparis-kubernetes-epel-7-epel-7.repo
    
    # yum install kubernetes -y

    配置yy1

    # cat /etc/kubernetes/apiserver
    
    ###
    
    # kubernetes system config
    
    #
    
    # The following values are used to configure the kubernetes-apiserver
    
    #
    
     
    
    # The address on the local server to listen to.
    
    KUBE_API_ADDRESS="10.193.6.35"
    
     
    
    # The port on the local server to listen on.
    
    KUBE_API_PORT="8080"
    
     
    
    # How the replication controller and scheduler find the apiserver
    
    KUBE_MASTER="10.193.6.35:8080"
    
     
    
    # Comma seperated list of minions
    
    MINION_ADDRESSES="10.193.6.36"
    
     
    
    # Port minions listen on
    
    MINION_PORT="10250"
    
     
    
    # cat /etc/kubernetes/config
    
    ###
    
    # kubernetes system config
    
    #
    
    # The following values are used to configure various aspects of all
    
    # kubernetes services, including
    
    #
    
    #   kubernetes-apiserver.service
    
    #   kubernetes-controller-manager.service
    
    #   kubernetes-kubelet.service
    
    #   kubernetes-proxy.service
    
     
    
    # Comma seperated list of nodes in the etcd cluster
    
    KUBE_ETCD_SERVERS="http://10.193.6.35:4001"
    
     
    
    # logging to stderr means we get it in the systemd journal
    
    KUBE_LOGTOSTDERR="true"
    
     
    
    # journal message level, 0 is debug
    
    KUBE_LOG_LEVEL=0
    
     
    
    # Should this cluster be allowed to run privleged docker containers
    
    KUBE_ALLOW_PRIV="true"

    启动yy1上相关服务

    master上需要运行etcd,kube-apiserver,kube-controller-manager,kube-scheduler这4个进程。

    for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
    
        systemctl restart $SERVICES
    
        systemctl enable $SERVICES
    
        systemctl status $SERVICES
    
    done

    配置yy2

     1 # cat /etc/kubernetes/kubelet
     2 
     3 ###
     4 
     5 # kubernetes kublet (minion) config
     6 
     7  
     8 
     9 # The address for the info server to serve on
    10 
    11 MINION_ADDRESS="10.193.6.36"
    12 
    13  
    14 
    15 # The port for the info server to serve on
    16 
    17 MINION_PORT="10250"
    18 
    19  
    20 
    21 # You may leave this blank to use the actual hostname
    22 
    23 MINION_HOSTNAME="10.193.6.36"
    24 
    25  
    26 
    27 # cat /etc/kubernetes/config  
    28 
    29 ###
    30 
    31 # kubernetes system config
    32 
    33 #
    34 
    35 # The following values are used to configure various aspects of all
    36 
    37 # kubernetes services, including
    38 
    39 #
    40 
    41 #   kubernetes-apiserver.service
    42 
    43 #   kubernetes-controller-manager.service
    44 
    45 #   kubernetes-kubelet.service
    46 
    47 #   kubernetes-proxy.service
    48 
    49  
    50 
    51 # Comma seperated list of nodes in the etcd cluster
    52 
    53 KUBE_ETCD_SERVERS="http://10.193.6.35:4001"
    54 
    55  
    56 
    57 # logging to stderr means we get it in the systemd journal
    58 
    59 KUBE_LOGTOSTDERR="true"
    60 
    61  
    62 
    63 # journal message level, 0 is debug
    64 
    65 KUBE_LOG_LEVEL=0
    66 
    67  
    68 
    69 # Should this cluster be allowed to run privleged docker containers
    70 
    71 KUBE_ALLOW_PRIV="true"

    修改yy2 kubelet的配置

    CentOS7上没有docker.socket服务,注释掉kubelet中对docker.socket的依赖。

    /usr/lib/systemd/system/kubelet.service

     1  [Unit]
     2 
     3 Description=Kubernetes Kubelet
     4 
     5 #After=docker.socket cadvisor.service
     6 
     7 After=cadvisor.service
     8 
     9 #Requires=docker.socket cadvisor.service
    10 
    11 Requires=cadvisor.service

    启动yy2上的相关服务

    minion上需要运行kube-proxy,kubelet以及docker。

    for SERVICES in kube-proxy kubelet docker; do 
        systemctl restart $SERVICES
        systemctl enable $SERVICES
        systemctl status $SERVICES 
    done

    创建pod描述文件

    创建一个apache的pod描述文件。

    # cat apache.json
    
    {
    
      "id": "apache",
    
      "desiredState": {
    
        "manifest": {
    
          "version": "v1beta1",
    
          "id": "apache-1",
    
          "containers": [{
    
            "name": "master",
    
            "image": "fedora/apache",
    
            "ports": [{
    
              "containerPort": 80,
    
              "hostPort": 80
    
            }]
    
          }]
    
        }
    
      },
    
      "labels": {
    
        "name": "apache"
    
      }
    
    }

     

    创建pod

    通过客户端工具kubecfg提交任务给apiserver,由scheduler选择一个minion部署容。

    [root@yy1 ~]# kubecfg -c apache.json create pods
    
    I0925 06:43:26.768122 09313 request.go:292] Waiting for completion of /operations/1
    
    ID                  Image(s)            Host                Labels              Status
    
    ----------          ----------          ----------          ----------          ----------
    
    apache              fedora/apache       /                   name=apache         Waiting
    
     
    
    [root@yy1 ~]# kubecfg list pods 
    
    ID                  Image(s)            Host                Labels              Status
    
    ----------          ----------          ----------          ----------          ----------
    
    apache              fedora/apache       10.193.6.36/        name=apache         Waiting

    apache服务会自动部署到机器yy2,yy2上的docker会自动下载image,然后启动apache服务。顺利的话,过一会儿,apache服务就会在yy2上起来。

    [root@yy1 ~]# kubecfg list pods  
    
    ID                  Image(s)            Host                Labels              Status
    
    ----------          ----------          ----------          ----------          ----------
    
    apache              fedora/apache       10.193.6.36/        name=apache         Running

     NewImage

    可以尝试访问一下,

     NewImage

    主要参考

    https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/fedora/fedora_manual_config.md


    作者:YY哥 
    出处:http://www.cnblogs.com/hustcat/ 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    java System.getProperty()参数大全
    元类(转自https://zhuanlan.zhihu.com/p/23887627)
    正则(高级)(转)
    正则(转)
    机器学习入门之房价预测(线性回归)
    python字节码(转)
    在虚拟机中搭建django,通过外网访问
    django框架入门
    linux下创建虚拟环境(转)
    PAT1005
  • 原文地址:https://www.cnblogs.com/hustcat/p/3993712.html
Copyright © 2020-2023  润新知