配置Kubernetes API server
[iyunv@node1 ~]# cat /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.99.119:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=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
[iyunv@node1 ~]# cat /etc/sysconfig/flanneld
# Flanneld configuration options
# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://192.168.99.119:2379"
# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/coreos.com/network"
# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
FLANNEL_OPTIONS="--iface=ens3"
这里需要注意FLANNEL_OPTIONS中的iface的值是你自己服务器的网卡,不同的服务器以及配置下和我的是不一样的。FLANNEL_ETCD_PREFIX="/coreos.com/network" 此值
与 [iyunv@node1 ~]# etcdctl ls /coreos.com/
/coreos.com/network 一致
启动Flannel
1
2
3
$systemctl restart flanneld
$systemctl enable flanneld
$systemctl status flanneld
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://192.168.99.119:8080"
KUBELET_ARGS=""
不同node节点只需要更改KUBELET_HOSTNAME 为node的hostname即可。
注意:本机的hostname值: 如果没有设置,kubectl get nodes查询不到node节点。
hostnamectl -set-hostname node1(节点名称)
启动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命令在各个节点查看整个集群的状态:
kubectl -s "http://192.168.99.119:8080" get nodes
[iyunv@node1 ~]# kubectl -s "http://192.168.99.119:8080" get nodes
NAME STATUS AGE
node1 Ready 6d
node2 Ready 6d
注意:
/etc/hosts下hostname的配置
node1
192.168.99.119
node2
192.168.99.109
获取namespace名称为非default的pod,service等
kubectl get pods,services --namespace=kube-system