Kubernetes简介
学习页面 https://kubernetes.io/zh/docs/setup/
Kubernetes:
它至少需要3个Master节点
Master节点的主要组件:
API Server: 主要用来接收其它组件发来的请求,并作出相应的处理.
Scheduler: 主要负责挑选出一个最佳node节点来运行pod,它挑选合适的node,通常分两个阶段,
第一个阶段:是先通过初步筛选, 根据运行pod的最大要求,如: 4G内存, 6颗CPU等需求,来做
初步筛选,假如从20台中选出了3台, 则进入第二阶段,在从这3台中选出一台最符合的节点,
这时就需要综合考量各种因素,最后将选出了一台最佳运行节点告诉给API Server,在由
Master节点负责调度Pod在该node节点上运行起来。
Controller:它是负责监控Node上运行的Pod是否正常工作,若它发现自己监控的某个Pod故障了,
它会向API Server发出通告,并要求Master在其它节点上再重新启动一个相同的Pod,
然后将故障的Pod Kill掉。
Controller-Manager:它是负责监控所有Controller是否正常工作的,在Kubernetes集群中,有很多
个功能各异的Controller, 监控Pod健康状态的Controller只是其中之一,Controller-Manager
它用于监控这些Controller工作状态的,一旦Controller故障,它将重启一个新的Controller来
代替它工作。
但是若Controller-Manager故障怎么办? 其实Master在创建时,要求最少要有3个节点,每个节点都会启动一个Controller-Manager,启动一个为主Controller-Manager,其它两个或多个为备用的Controller-Manager,一旦主Controller-Manager故障,则备用的Controller-Manager将代替它继续工作。
https://www.cnblogs.com/wn1m/p/11285430.html
helm原理
转载自 https://www.cnblogs.com/wn1m/p/11291304.html
Helm:
helm就相当于Linux的包管理工具yum,但它管理的程序包是一些打包好的清单文件。
其核心术语:
Chart:一个helm程序包,它里面可理解为,包含了一下定义Pod的清单文件,这些清单包含Service,Deployment,DaemonSet,ReplicaSet,StatefulSet,HPA等配置信息,当然这些东西不一定都有,会根据应用不同,其清单内容也会有所区别,Template是模板文件,因为配置清单要能适用于各种场景,已经能够根据用户使用场景,做一些自定义配置,比如:Nginx配置清单中要配置HTTPS,那就需要配置证书,但证书不可能提前打包到Chart中,这就需要一些机制,能通过传递变量的方式来适应这些自定义需求,而template就是这样的目的而存在的,值列表就是为Template提供传递变量的文件。
部署Helm:
#下载helm 二进制文件
wget -c https://get.helm.sh/helm-v2.14.2-linux-amd64.tar.gz
#下载完成后,解压后,里面会有helm二进制可执行文件,只需要将helm 放到 PATH 路径下。
#参考示例:
https://github.com/helm/helm/blob/master/docs/rbac.md
#创建一个能在集群级别管理Pod资源的tiller
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
#在进行tiller server安装时,默认是从google镜像仓库中下载的,但国内很多下载不下来,这里可先从阿里云的谷歌镜像仓库下载下来,#导入自己的harbor中,或直接使用阿里的谷歌镜像仓库也可
#下面是我提前下载了tiller的镜像,推到我的harbor了
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.2 #这是从谷歌镜像仓库下载.
helm init --tiller-image harbor.zcf.com/k8s/tiller:v2.14.2 --service-account tiller --history-max 200
#若后期需要升级tiller镜像,可直接使用下面命令
$ export TILLER_TAG=v2.0.0-beta.1 # Or whatever version you want
$ kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:$TILLER_TAG
#初始化完成后,查看版本
# helm version
Client: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"}
#做helm仓库更新
# helm repo update
#测试安装memcached
# helm install stable/memcached
#查看安装的Chart # helm list NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE plucking-buffalo 1 Tue Jul 30 15:55:04 2019 DEPLOYED memcached-2.9.0 1.5.12 default
#删除Chart
# helm delete --purge plucking-buffalo