1)关闭CentOS自带的防火墙服务:
systemctl disable firewalld
systemctl stop firewalld
#Kubernetes必须关闭Linux自带防火墙,否则API Server会运行不正常,或者配置路由规则;
#Kubernetes的master与工作Node之间会有大量的网络通信,在内网系统中建议关闭防火墙服务;
2)安装etcd和Kubernetes软件(会自动安装Docker软件)
yum install -y etcd kubernetes
3)安装好软件后,修改2个配置文件(其他配置文件使用系统默认的参数即可)
docker配置文件为 /etc/sysconfig/docker,其中OPTIONS的内容设置为
OPTION='--selinux-enable=false --insecure-registry gcr.io'
#关闭selinux,安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
#如果服务器可以访问外网,则可在docker daemon的启动参数中加上--insecure-registry gcr.io
Kubernetes apiserver 配置文件为/etc/kubernetes/apiserver,把--admission_control参数中的ServiceAccount删除。
#kubernetes安全机制--Admission Control 准入控制
#在kubernetes中,一些高级特性正常运行的前提条件为,将一些准入模块处于enable状态。总结下,对于kubernetes apiserver,如果不适当的配置准入控制模块,他就不能称作是一个完整的server,某些功能也不会正常的生效。
#ServiceAccount
#一个serviceAccount为运行在pod内的进程添加了相应的认证信息。当准入模块中开启了此插件(默认开启),如果pod没有serviceAccount属性,将这个pod的serviceAccount属性设为“default”;确保pod使用的serviceAccount始终存在;如果LimitSecretReferences 设置为true,当这个pod引用了Secret对象却没引用ServiceAccount对象,弃置这个pod;如果这个pod没有包含任何ImagePullSecrets,则serviceAccount的ImagePullSecrets被添加给这个pod;如果MountServiceAccountToken为true,则将pod中的container添加一个VolumeMount 。
4)按顺序启动所有的服务:
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
至此,一个单机版的Kubernetes集群环境就安装启动完成了。