CentOS7.0上部署kubernetes集群
时间:2016-05-16 22:28 来源:blog.csdn.net 作者:虾米
一. 部署环境及架构
-
OpenStack:恒天云3.4
-
操作系统:centos 7.0
-
flannel: 0.5.5
-
Kubernetes: 1.2.0
-
Etcd版本: 2.2.2
-
Docker版本: 1.18.0
-
集群信息:
Role
Hostname
IP Address
Master
master
10.0.222.2
Node
node1
10.0.222.3
Node
node2
10.0.222.4
Node
node3
10.0.222.5
Node
node4
10.0.222.6
master包含kube-apiserver kube-scheduler kube-controller-manager etcd四个组件
node包含kube-proxy和kubelet两个组件
1. kube-apiserver:位于master节点,接受用户请求。
2. kube-scheduler:位于master节点,负责资源调度,即pod建在哪个node节点。
3. kube-controller-manager:位于master节点,包含ReplicationManager,Endpointscontroller,Namespacecontroller,and Nodecontroller等。
4. etcd:分布式键值存储系统,共享整个集群的资源对象信息。
5. kubelet:位于node节点,负责维护在特定主机上运行的pod。
6. kube-proxy:位于node节点,它起的作用是一个服务代理的角色。
二 、安装步骤
准备工作
关闭防火墙
为了避免和Docker的iptables产生冲突,我们需要关闭node上的防火墙:
1
2
$ systemctl stop firewalld
$ systemctl disable firewalld
安装NTP
为了让各个服务器的时间保持一致,还需要为所有的服务器安装NTP:
1
2
3
$ yum -y install ntp
$ systemctl start ntpd
$ systemctl enable ntpd
部署Master
安装etcd和kubernetes
1
$ yum -y install etcd kubernetes
配置etcd
修改etcd的配置文件/etc/etcd/etcd.conf:
1
2
3
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
配置etcd中的网络
定义etcd中的网络配置,nodeN中的flannel service会拉取此配置
1
$ etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16"}'
配置Kubernetes API server
1
2
3
4
5
6
7
API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet_port=10250"
KUBE_ETCD_SERVERS="--etcd_servers=http://10.0.222.2:2379"
KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,
NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
这里需要注意原来KUBE_ADMISSION_CONTROL默认包含的ServiceAccount要删掉,不然启动API server的时候会报错。
启动服务
接下来,在Master上启动下面的服务:
1
2
3
4
5
$for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
部署Node
安装Kubernetes和Flannel
1
$ yum -y install flannel kubernetes
配置Flannel
修改Flannel的配置文件/etc/sysconfig/flanneld:
1
2
3
FLANNEL_ETCD="http://10.0.222.2:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"
FLANNEL_OPTIONS="--iface=ens3"
这里需要注意FLANNEL_OPTIONS中的iface的值是你自己服务器的网卡,不同的服务器以及配置下和我的是不一样的。
启动Flannel
1
2
3
$systemctl restart flanneld
$systemctl enable flanneld
$systemctl status flanneld
上传网络配置
在当前目录下创建一个config.json,内容如下:
1
2
3
4
5
6
7
8
{
"Network": "172.17.0.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan",
"VNI": 7890
}
}
然后将配置上传到etcd服务器上:
1
$ curl -L http://10.0.222.2:2379/v2/keys/coreos.com/network/config -XPUT --data-urlencode value@config.json
修改Kubernetes配置
修改kubernetes默认的配置文件/etc/kubernetes/config:
1
KUBE_MASTER="--master=http://10.0.222.2:8080"
修改kubelet配置
修改kubelet服务的配置文件/etc/kubernetes/kubelet:
1
2
3
4
5
6
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
# change the hostname to minion IP address
KUBELET_HOSTNAME="--hostname_override=node1"
KUBELET_API_SERVER="--api_servers=http://10.0.222.2:8080"
KUBELET_ARGS=""
不同node节点只需要更改KUBELET_HOSTNAME 为node的hostname即可。
启动node服务
1
2
3
4
5
$ for SERVICES in kube-proxy kubelet docker; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
创建快照,其他节点用快照安装(修改相应的hostname以及KUBELET_HOSTNAME即可)
查看集群nodes
部署完成之后,可以kubectl命令来查看整个集群的状态:
1 kubectl -s "http://10.0.222.2:8080" get nodes
(责任编辑:IT)
一. 部署环境及架构
master包含kube-apiserver kube-scheduler kube-controller-manager etcd四个组件 node包含kube-proxy和kubelet两个组件
1. kube-apiserver:位于master节点,接受用户请求。
2. kube-scheduler:位于master节点,负责资源调度,即pod建在哪个node节点。 3. kube-controller-manager:位于master节点,包含ReplicationManager,Endpointscontroller,Namespacecontroller,and Nodecontroller等。 4. etcd:分布式键值存储系统,共享整个集群的资源对象信息。 5. kubelet:位于node节点,负责维护在特定主机上运行的pod。 6. kube-proxy:位于node节点,它起的作用是一个服务代理的角色。 二 、安装步骤 准备工作 关闭防火墙为了避免和Docker的iptables产生冲突,我们需要关闭node上的防火墙:
安装NTP为了让各个服务器的时间保持一致,还需要为所有的服务器安装NTP:
部署Master安装etcd和kubernetes
配置etcd修改etcd的配置文件/etc/etcd/etcd.conf:
配置etcd中的网络定义etcd中的网络配置,nodeN中的flannel service会拉取此配置
配置Kubernetes API server
这里需要注意原来KUBE_ADMISSION_CONTROL默认包含的ServiceAccount要删掉,不然启动API server的时候会报错。 启动服务接下来,在Master上启动下面的服务:
部署Node安装Kubernetes和Flannel
配置Flannel修改Flannel的配置文件/etc/sysconfig/flanneld:
这里需要注意FLANNEL_OPTIONS中的iface的值是你自己服务器的网卡,不同的服务器以及配置下和我的是不一样的。 启动Flannel
上传网络配置在当前目录下创建一个config.json,内容如下:
然后将配置上传到etcd服务器上:
修改Kubernetes配置修改kubernetes默认的配置文件/etc/kubernetes/config:
修改kubelet配置修改kubelet服务的配置文件/etc/kubernetes/kubelet:
不同node节点只需要更改KUBELET_HOSTNAME 为node的hostname即可。 启动node服务
创建快照,其他节点用快照安装(修改相应的hostname以及KUBELET_HOSTNAME即可)查看集群nodes部署完成之后,可以kubectl命令来查看整个集群的状态:
1 kubectl -s "http://10.0.222.2:8080" get nodes
(责任编辑:IT) |