CentOS7.0上部署kubernetes集群
-
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两个组件
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 | $ systemctl stop firewalld |
安装NTP
为了让各个服务器的时间保持一致,还需要为所有的服务器安装NTP:
1 | $ yum -y install ntp |
部署Master
安装etcd和kubernetes
1 | $ yum -y install etcd kubernetes |
配置etcd
修改etcd的配置文件/etc/etcd/etcd.conf
:
1 | ETCD_NAME=default |
配置etcd中的网络
定义etcd中的网络配置,nodeN中的flannel service会拉取此配置
1 | $ etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16"}' |
配置Kubernetes API server
1 | API_ADDRESS="--address=0.0.0.0" |
这里需要注意原来KUBE_ADMISSION_CONTROL
默认包含的ServiceAccount
要删掉,不然启动API server的时候会报错。
启动服务
接下来,在Master上启动下面的服务:
1 | $for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do |
部署Node
安装Kubernetes和Flannel
1 | $ yum -y install flannel kubernetes |
配置Flannel
修改Flannel的配置文件/etc/sysconfig/flanneld
:
1 | FLANNEL_ETCD="http://10.0.222.2:2379" |
这里需要注意FLANNEL_OPTIONS
中的iface的值是你自己服务器的网卡,不同的服务器以及配置下和我的是不一样的。
启动Flannel
1 | $systemctl restart flanneld |
上传网络配置
在当前目录下创建一个config.json
,内容如下:
1 | { |
然后将配置上传到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 | KUBELET_ADDRESS="--address=0.0.0.0" |
不同node节点只需要更改KUBELET_HOSTNAME 为node的hostname即可。
启动node服务
1 | $ for SERVICES in kube-proxy kubelet docker; do |
创建快照,其他节点用快照安装(修改相应的hostname以及KUBELET_HOSTNAME即可)
查看集群nodes
部署完成之后,可以kubectl命令来查看整个集群的状态: