CentOS 7.7 安装 Kubernetes 集群部署 JDK 应用

发布于 2020-03-24  139 次阅读


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

二十多岁的年纪,希冀着时光别走…