kubernetes-----集群详解、minikube集群搭建

目录

一.三种集群

二.部署minikube集群


一.三种集群

minikube

  • Minikube是一个工具,可以在本地快速运行一个单点的kubernets,尝试Kubernetes或日常开发的用户使用。不能用于环境。
  • 官网地址:Minikube下载地址

kubernetes-----集群详解、minikube集群搭建_第1张图片

kubeadm

  • kubeadm是一个命令行工具,可以在物理机,云服务器或者虚拟机上轻松部署安全可靠的Kuernetes集群
  • kubeadm提供kubeadm init和kubeadm join,用于快速部署kubernetes集群。kubeadm init启动一个kubernetes的主节点,kubeadm join启动一个Kubernetes工作节点并且将其加入集群
  • 官网地址:kubeadm工具下载地址

kubernetes-----集群详解、minikube集群搭建_第2张图片

二进制包

  • 从官方下载发版本的二进制包,手动部署每个组件,组成kubernetes集群。
  • 二进制包下载地址:Releases · kubernetes/kubernetes · GitHub

kubernetes-----集群详解、minikube集群搭建_第3张图片

总结:生成环境中部署Kubernets集群,只有Kueadm和二进制包可选,Kubeadm降低部署门槛,但是屏蔽了很多细节,遇到问题很难排查。学习过程中,建议使用二进制包部署Kuernetes集群,便于学习工作原理和后期维护。

二.部署minikube集群

实验环境

角色 IP地址 系统 软件包
master 192.168.43.101/24 centos7 etcd kubernetes flannel
node1 192.168.43.102/24 centos7 etcd kubernetes flannel
node2 192.168.43.103/34 centos7 etcd kubernetes flannel

master的部署

  • 设置基本环境
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# su
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0
  • 安装相关软件包
[root@master ~]# yum install -y etcd kubernetes flannel
#etcd作为分布式存储软件
#flannel作为网络
#kubernetes作为docker管理集群
#docker会作为依赖包被下载
  • 配置etcd分布式键值存储系统
[root@master ~]# cd /etc/etcd/
[root@master etcd]# ls
etcd.conf
[root@master etcd]# vi etcd.conf 
##在文件末尾追加如下内容:
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"        ##数据目录
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:4001"    ##客户端访问监听地址
ETCD_NAME="default"        ##节点名称
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:4001"    ##客户端通告地址


//以下为文件扩展解析,不需要加入
ETCD_LISTEN_PEER_URLS: 集群通信监听地址
ETCD_INITIAL_ADVERTISE_PEER_URLS: 集群通告地址
ETCD_INITIAL_CLUSTER: 集群节点地址
ETCD_INITIAL_CLUSTER_TOKEN: 集群Token(令牌)
ETCD_INITIAL_CLUSTER_STATE: 加入集群当前状态,new是新集群,existing表示加入已有集群
  • 配置apiserver
//apiserver为集群的统一入口,各个组件的协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给apiserver处理后再提交给etcd存储

[root@master kubernetes]# ls
apiserver  config  controller-manager  kubelet  proxy  scheduler
[root@master kubernetes]# vi apiserver 
##做如下修改
# The address on the local server to listen to.
KUBE_API_ADDRESS="--address=0.0.0.0"        ##表示master的监听地址

# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"        ##表示master监听的端口

# Port minions listen on
KUBELET_PORT="--kubelet-port=10250"    ##指定node的代理端口

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:4001"    #指定etcd集群的地址与端口
  • 配置flannel网络
[root@master ~]# cd /etc/sysconfig
[root@master sysconfig]# vi flanneld
# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs
//指定etcd存储的网络信息,保证成功连接etcd
FLANNEL_ETCD_ENDPOINTS="http://192.168.43.101:4001"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

注:

Overlay network:覆盖网络,在现有的网络环境中在叠加一层虚拟网络技术模式,将网络中的主机通过虚拟链路连接起来。

Vxlan:将原数据包封装到UDP中,并且使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传,到达目的地之后又隧道端点解封并将数据发送目标地址

Flannel:是Overlay网络的一种,也是将源数据包封装在另一层网络包里进行路由转发和通信,目前已经支持,UDP、VXLAN、HOSTGW、AWS、VPC和GCE路由等数据转发方式

  • 设置etcd网络
[root@master ~]# etcdctl -C //192.168.43.101:4001 set /atomic.io/network/config '{"Network":"10.1.1.0/16"}'
{"Network":"10.1.1.0/16"}
  • 启动所有组件服务
systemctl start etcd
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler

node1与node2的部署(以下配置以node2为例)

  • 环境设置
hostnamectl set-hostname node1/node2
su

systemctl stop firewalld
setenforce 0
  • 安装必要软件包
yum install -y etcd kubernetes flannel
  • 编辑主配置文件
grep -v "^#" /etc/kubernetes/config 

KUBE_LOGTOSTDERR="--logtostderr=true"        //启用日志

KUBE_LOG_LEVEL="--v=0"        //设置日志等级

KUBE_ALLOW_PRIV="--allow-privileged=false"    //是否启用授权

KUBE_MASTER="--master=http://192.168.43.101:8080"    //指定master的地址与端口
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.43.101:4001"    //指定etcd的地址与端口

  • 编辑代理配置文件
grep -v "^#" /etc/kubernetes/kubelet 

KUBELET_ADDRESS="--address=0.0.0.0"        //指定代理的地址

KUBELET_PORT="--port=10250"    //指定代理的端口

KUBELET_HOSTNAME="--hostname-override=192.168.43.103"    //设置在集群中显示的主机名

KUBELET_API_SERVER="--api-servers=http://192.168.43.101:8080"    //指定apiserver的地址与端口

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"    //管理pod网络的中的镜像

KUBELET_ARGS=""
[root@node2 ~]# 
  • 编辑网络配置
[root@node2 ~]# cat /etc/sysconfig/flanneld 
# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://192.168.43.101:4001"    //指定etcd的地址与端口

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
 
[root@node2 ~]# 
  • 启动服务
[root@node2 ~]# systemctl start flanneld.service 
[root@node2 ~]# systemctl start kube-proxy.service 
[root@node2 ~]# systemctl start kubelet.service 
[root@node2 ~]# systemctl start docker

在master中,测试minikube集群

  • 查看所有节点
[root@master ~]# kubectl get nodes
NAME             STATUS    AGE
192.168.43.102   Ready     5h
192.168.43.103   Ready     55m
[root@master ~]# 
  • 查看所有节点服务是否健康
[root@master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
etcd-0               Healthy   {"health":"true"}   
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
[root@master ~]# 

总结:minikube集群仅用于测试

你可能感兴趣的:(kubernetes,kubernetes,docker,容器)