Kubernates 集群组件
- Etcd:在 Master 节点上,一个高可用的 K/V 键值对存储和服务发现系统
- Kube-apiserver:在 Master 节点上,实现跨主机的容器网络通信
- Kube-controller-manager:在 Master 节点上,确保集群服务
- Kube-scheduler:在 Master 节点上,调度容器,分配到 Node 节点上
- Kube-proxy:在 Node 节点上,提供网络代理服务
- Kubelet:在 Node 节点上,按照配置文件中定义的容器规格启动容器
- Flannel:在 Node 节点上,实现跨主机的容器网络的通信
使用两台 Hyper-V 虚拟机进行安装,系统为 CentOS 7.7.1908,Master、Node 个一台。
关闭防火墙和 Selinx
否则与 Docker 容器的放火请规则冲突
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
检查状态
firewall-cmd --state
修改 Hosts
vi /etc/hosts
192.168.1.103 k8s-master
192.168.1.103 etcd
192.168.1.103 registry
192.168.1.104 k8s-node
cat /etc/hosts
Master 节点
安装Etcd 和 Kubernates-master
yum -y install etcd kubernetes-master
编辑 /etc/etcd/etcd.conf 文件,设置 Etcd 监听客户端的 URLS
vi /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS=”http://0.0.0.0:2379“
编辑 /etc/kubernetes/apiserver 文件,设置 Kube-api 的地址与端口并删除 ServiceAccount
vi /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
安装 Docker
yum install docker -y
启动 etcd、kube-apiserver、kube-controller-manager、kube-scheduler 等服务,并设置开机启动
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler;
do
systemctl restart $SERVICES;
systemctl enable $SERVICES;
systemctl status $SERVICES;
done
在 etcd 中定义 flannel 网络
etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
Node 节点
安装 Kubernetes Node 和 Flannel 组件应用
yum -y install kubernetes-node flannel
编辑 /etc/sysconfig/flanneld 文件,为 Flannel 网络指定 Etcd 服务
vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS=”http://192.168.0.103:2379“
编辑 /etc/kubernetes/config 文件,指定 Kube Master 地址
vi /etc/kubernetes/config
KUBE_MASTER=”—master=http://192.168.1.103:8080“
编辑 /etc/kubernetes/kubelet 文件,配置 Node 节点信息
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.0.104" # 修改为 Node 的 IP
KUBELET_API_SERVER="--api-servers=http://192.168.0.103:8080" # 指定 Master 节点的 API Server
启动 Kube-proxy、Kubelet、Docker、Flanneld 等服务,并设置开机启动
for SERVICES in kube-proxy kubelet docker flanneld;
do
systemctl restart $SERVICES;
systemctl enable $SERVICES;
systemctl status $SERVICES;
done