Docker实践(6)—CentOS7上部署Kubernetes Kubernetes架构 环境 安装kubernetes 配置yy1 启动yy1上相关服务 配置yy2 修改yy2 kubelet的配置 启动yy2上的相关服务 创建pod描述文件 创建pod 主要参考

Docker实践(6)—CentOS7上部署Kubernetes
Kubernetes架构
环境
安装kubernetes
配置yy1
启动yy1上相关服务
配置yy2
修改yy2 kubelet的配置
启动yy2上的相关服务
创建pod描述文件
创建pod
主要参考

Kubernetes的整体架构如下:

 Docker实践(6)—CentOS7上部署Kubernetes
Kubernetes架构
环境
安装kubernetes
配置yy1
启动yy1上相关服务
配置yy2
修改yy2 kubelet的配置
启动yy2上的相关服务
创建pod描述文件
创建pod
主要参考

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

 Docker实践(6)—CentOS7上部署Kubernetes
Kubernetes架构
环境
安装kubernetes
配置yy1
启动yy1上相关服务
配置yy2
修改yy2 kubelet的配置
启动yy2上的相关服务
创建pod描述文件
创建pod
主要参考

可以尝试访问一下,

 Docker实践(6)—CentOS7上部署Kubernetes
Kubernetes架构
环境
安装kubernetes
配置yy1
启动yy1上相关服务
配置yy2
修改yy2 kubelet的配置
启动yy2上的相关服务
创建pod描述文件
创建pod
主要参考

主要参考

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

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