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 容器的放火请规则冲突

  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. setenforce 0

检查状态

  1. firewall-cmd --state

修改 Hosts

  1. vi /etc/hosts
  2. 192.168.1.103 k8s-master
  3. 192.168.1.103 etcd
  4. 192.168.1.103 registry
  5. 192.168.1.104 k8s-node
  6. 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

  1. vi /etc/kubernetes/apiserver
  2. KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
  3. KUBE_API_PORT="--port=8080"
  4. KUBELET_PORT="--kubelet-port=10250"
  5. KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

安装 Docker

yum install docker -y

启动 etcd、kube-apiserver、kube-controller-manager、kube-scheduler 等服务,并设置开机启动

  1. for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler;
  2. do
  3. systemctl restart $SERVICES;
  4. systemctl enable $SERVICES;
  5. systemctl status $SERVICES;
  6. 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 节点信息

  1. vi /etc/kubernetes/kubelet
  2. KUBELET_ADDRESS="--address=0.0.0.0"
  3. KUBELET_PORT="--port=10250"
  4. KUBELET_HOSTNAME="--hostname-override=192.168.0.104" # 修改为 Node 的 IP
  5. KUBELET_API_SERVER="--api-servers=http://192.168.0.103:8080" # 指定 Master 节点的 API Server

启动 Kube-proxy、Kubelet、Docker、Flanneld 等服务,并设置开机启动

  1. for SERVICES in kube-proxy kubelet docker flanneld;
  2. do
  3. systemctl restart $SERVICES;
  4. systemctl enable $SERVICES;
  5. systemctl status $SERVICES;
  6. done