k8s是做什么的?
用于自动部署,扩展和管理容器化应用程序的开源系统
常见的集群管理工具
Apache Mesos:Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核成本高,但稳定性好
Docker Swarm:Docker官方提供的一款集群管理工具
Google Kubernetes:是Google开源的容器集群管理系统
k8s的组件
Master节点上的组件:
Master 组件提供的集群控制,Master 组件对集群做出全局性决策并调度,以及检测和响应集群事件
kube-apiserver:用于暴露Kubernetes API,任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行,请参阅构建高可用群集
etcd:Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。
kube-controller-manager:运行管理控制器,它们是集群中处理常规任务的后台线程
kube-scheduler:监视新创建没有分配到Node的Pod,为Pod选择一个Node
Node节点上的组件:
node节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行时环境
kubelet:主要的节点代理,它会监视已分配给节点的pod
kube-proxy:通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务
pod:管理容器的基本单元
还有service和docker。。。。。。
k8s各个组件的工作原理(下图所示)
安装docker-ce(最好安装1.8.09.6的版本)
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-18.09.6
运行环境如下图所示(环境嵌套了4层ip关系):
方法一:使用virtualbox虚拟机搭建(在虚拟机里面运行k8s环境)
1.安装virtualbox
配置yum源:vim /etc/yum.repos.d/vbox.repo
[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
yum安装virtualbox
yum -y install VirtualBox-5.2
2.使用国内阿里云安装Minikube
curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.2.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
3.使用国内阿里云安装kubectl
curl -LO http://kubernetes.oss-cn-hangzhou.aliyuncs.com/kubernetes-release/release/`curl -s http://kubernetes.oss-cn-hangzhou.aliyuncs.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl
4.启动minikube程序创建k8s
minikube start --vm-driver=virtualbox --registry-mirror=https://registry.docker-cn.com
没有--vm-driver选项默认也是通过virtualbox虚拟机启动
运行该命令之后会自己下载镜像
5.运行kubectl设置映射访问地址(因为是在虚拟机中的虚拟机中运行,所以没有设置只能在宿主CentOS7.2上访问,如果没有图形化界面没有浏览器就无法操作k8s)
kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
该进程会一直运行
因为我们使用的是centos 7 minimal只有终端环境,所以我们要在宿主机上进行浏览器访问
6.通过命令查看web网页访问路径,访问测试
执行命令:minikube dashboard
该命令如果是系统安装了图形化桌面的话就可以直接进入到web界面,如果没有安装就不行,但是可以通过该命令知道访问路径,然后通过浏览器访问该地址路径进入web界面
通过该地址路径访问进入k8s系统
注意:记得修改前面的ip地址和端口该问宿主机ip地址和8001端口
方法二:在宿主机上搭建(就是在真机上的VMware上CentOS7.2上安装)
步骤一致只需要启动minikube的时候修改选项(不需要安装virtualbox)
minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com
注意:用docker images查看镜像是否下载全了,如果网速不好可能会导致有些镜像没有下载完成,启动运行就会出错,导致404和503的错误通常是因为kubernetes-dashboard镜像缺失
docker images命令查看,应该会有下面这些镜像(注意版本)
k8s.gcr.io/kube-proxy
k8s.gcr.io/kube-apiserver
k8s.gcr.io/kube-scheduler
k8s.gcr.io/kube-controller-manager
k8s.gcr.io/etcd
k8s.gcr.io/coredns
k8s.gcr.io/kubernetes-dashboard-amd64
k8s.gcr.io/kube-addon-manager
k8s.gcr.io/kubernetes-dashboard
k8s.gcr.io/k8s-dns-dnsmasq-nanny
k8s.gcr.io/k8s-dns-sidecar
k8s.gcr.io/k8s-dns-kube-dns
k8s.gcr.io/pause
gcr.io/k8s-minikube/storage-provisioner
也可以使用kubectl get pods --all-namespaces命令查看(如下图所示)