kubernetesHPA使用及测试
一、安装metrics serverMetrics Server是Kubernetes内置的容器资源指标来源。Metrics Server从node节点上的Kubelet收集资源指标,并通过Metrics API在 Kubernetes apiserver中公开指标数据,以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用,也可以通过访问kubectl top node/pod查看指标数据。使用Metrics-Server监控node和pod计算资源使用情况,并提供给第三方使用下载地址:gituhub地址修改资源定义文件
root@master:~/.kube# vim components.yaml
修改镜像位置:
image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1
修改为:
registry.cn-hangzhou.aliyuncs.com/liangxiaohui/metrics-server:0.6.1
部署 ...
kubernetes常用资源——job/cronjob
k8s-job/cronjob1、job(初始化数据库等操作,只执行一次)
[root@haproxy1 case2-job]# cat 1.job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-mysql-init
namespace: test
spec:
template:
spec:
containers:
- name: job-mysql-init-container
image: centos:7.9.2009
command: ["/bin/sh"]
args: ["-c", "echo data init job at `date +%Y-%m-%d_%H-%M-%S` >> /cache/data.log"]
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
...
kubernetes常用资源——Volume存储卷
Volume存储卷
Volume将容器中的指定数据和容器解耦,并将数据存储到指定的位置,不同的存储卷功能不一致,如果是基于网络存储的存储卷可以实现容器间的数据共享和持久化。
静态存储卷需要在使用前手动创建pv和pvc,然后绑定至pod使用
常用的几种卷:
emptyDir:本地临时卷
hostPath:本地存储卷
configmap:配置文件
Secret:是一种包含少量敏感信息例如密码、令牌或密钥的对象
nfs等网络存储卷
https://kubernetes.io/zh/docs/concepts/storage/volumes/
一、emptyDiremptyDir:本地临时卷,pod删除卷也跟着删除,通常用于两个pod之间日志共享
当pod被分配给节点时,首先创建emptydir卷,并且只要该Pod在该节点上运行,该卷就会存在,正如卷的名字所述,它最初是空的,Pod中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中的相同或不同路径上,当出于任何原因从节点中删除pod时,emptyDir中的数据将被永久删除。
/var/ ...
kubernetes常用资源——secret
secretSecret 的功能类似于configmap给pod提供额外的配置信息,但是secret是一种包含少量敏感信息例如密码,令牌或秘钥的对象
Secret的名称必须是合法的DNS子域名
每个Secret的大小最多为1Mib,主要是为了避免用户创建非常大的Secret进而导致API服务器和kubelet内存耗尽,不过创建很多小的Secret也可能耗尽内存,可以使用资源配额来约束每个名字空间中的Secret个数
在通过yaml文件创建secret时,可以设置data或stringData字段,data和stringData字段都是可选的,data字段中所有的键值都必须是base64编码的字符串,如果不希望执行这种base64字符串的转换操作,也可以选择设置stringData字段,其中可以使用任何非加密的字符串作为其值。
Pod可以用三种方式的任意一种来使用Secret
作为挂载到一个或多个容器上的卷中的文件(crt文件,key文件)
作为容器的环境变量
由kubelet在为pod拉取镜像时使用(与镜像仓库的认证)
一、Secret类型:kubernetes默认支持多种不同类型 ...
kubernetes常用资源——Service
Service控制器由于Pod重建之后ip就变了,因此pod之间使用的IP直接访问会出现无法访问的问题,而service则解耦了服务和应用,service的实现方式就是通过label标签动态匹配后端endpoint。
kube-proxy 监听着k8s-apiserver,一旦service资源发生变化(调k8s-api修改service信息),kube-proxy 就会生成对应得负载调度得调整,这样就保证了service得最新状态
service类型:
ClusterIP:用于内部服务基于service name的访问
NodePort:用于K8s集群以外的服务主动访问运行在kubernetes集群内部的服务
LoadBalancer:用于公有云环境的服务暴露
ExternalName:用于将k8s集群外部的服务映射至K8s集群内部访问,从而让集群内部的pod能够通过固定的service name访问集群外部的服务,有时候也用于将不同namespace 之间的pod通过ExternalName 进行访问
clusterIP:
[root@haproxy1 case4-servi ...
kubernetes常用资源——configMap
Configmapconfigmap配置信息和镜像解耦,实现方式为将配置信息放到configmap对象中,然后在pod中作为volume挂载到pod中,从而实现导入配置的目的。
使用场景:
通过configmap给pod定义全局环境变量
通过configmap给pod传递命令行参数,如mysql -u -p 中的账户名密码可以通过configmap传递
通过configmap给pod中的容器服务提供配置文件,配置文件以挂载到容器的形式使用
注意:configmap需要在pod使用它之前创建。
pod只能使用位于同一个namespace的configmap,即configmap不能跨namespace使用
通常用语非安全加密的配置场景
configmap通常是小于1MB的配置
示例1:
[root@haproxy1 case10-configmap]# cat 1-deploy_configmap.yml
#定义configmap资源
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespac ...
kubernetes常用资源——PV/PVC
PV/PVC
PV:persistentVolume (与硬件(nfs、ceph等)对接)
是集群中已经由kubernetes 管理员配置的一个网络存储,集群中的存储资源一个集群资源,即不隶属于任何namespace,PV的数据最终存储在硬件存储,pod不能字节挂载pv,pv需要绑定给pvc并最终由pod挂载pvc使用,PV支持NFS、Ceph,商业存储或云提供商的听特定的存储等,可以自定义PV的类型是块还是文件存储,存储空间大小,访问模式等,PV的生命周期独立于Pod,即当使用PV的Pod被删除时可以对PV的数据没有影响
PVC:persistentVolumeClaim(与pod关联,与pv绑定)
PVC是对存储的请求,pod挂载PVC并将数据存储在PVC,而PVC需要绑定到PV才能使用,另外PVC在创建的时候要知道namespace,即Pod要和PVC在同一个namespace下,可以对pvc设置特定的空间大小和访问模式,使用PVC的pod在删除时也可以对PVC中的数据没有影响
用于实现pod和storage的解耦,这样我们修改storage的时候不需要修改po ...
kubernetes常用资源——deployment
Deployment副本控制器Deployment:比rs更高级的控制器,除了有rs的功能之外,还有很多高级的功能,比如最重要的滚动升级、回滚等
[root@haproxy1 case3-controller]# cat deployment.yml
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
#app: ng-deploy-80 #rc
matchLabels: #rs or deployment
app: ng-deploy-80
#matchExpressions:
# - {key: app, operator: In, values: [ng-deploy-80,ng-rs-81]}
template:
metadata:
labels:
...
kubernetes常用资源——RC/RS
RC/RS副本控制器Replication Controller:副本控制器(selector = !=)#第一代pod副本控制器
[root@haproxy1 case3-controller]# cat rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: ng-rc
spec:
replicas: 2
selector:
app: ng-rc-80
#app1: ng-rc-81
template:
metadata:
labels:
app: ng-rc-80
#app1: ng-rc-81
spec:
containers:
- name: ng-rc-80
image: nginx
ports:
- containerPort: 80
Repl ...
kubeasz -etcd v3 API版本数据备份与恢复
WAL是warite ahead log(预写式日志)得缩写,顾名思义,也就是在执行真正得写操作之前先写一个日志,预写日志。wal:存放预写式日志,最大得作用是记录了整个数据变化得全部历程,在etcd中,所有数据得修改在提交前,都要先写入到WAL中。
一、单机版etcd恢复数据V3 版本备份数据(单机版):
#备份
[root@etcd1 ~]# ETCDCTL_API=3 etcdctl snapshot save snapshop.db
#恢复到一个指定目录
[root@etcd1 ~]# ETCDCTL_API=3 etcdctl snapshot restore snapshop.db --data-dir=/opt/etcd-testdir-2
Deprecated: Use `etcdutl snapshot restore` instead.
2022-05-05T20:38:13+08:00 info snapshot/v3_snapshot.go:251 restoring snapshot {"path": "snap ...