目录
一、Mysql数据库备份
备份命令(--no-data 该命令只备份表结构)
mysqldump -uroot -h127.0.0.1 -p test --no-data > /root/back.sql
还原命令
mysql> source /root/back.sql;
定期备份
二、k8s 设置弹性伸缩(HPA)
弹性伸缩是基于Metrics-server组件获取Pod的资源使用情况,Metric server从每个节点上Kubelet公开的摘要API收集指标,从而与阈值进行比较,进行扩缩容。
1、首先安装Metrics-server组件
下载部署清单文件:
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
vim metricserver.yaml 修改里面的args参数,添加- --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP
资源清单如下
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
...skipping...
kind: Deployment
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
#修改镜像拉取地址为aliyun路径
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
#镜像拉取策略改为IfNotPresent
imagePullPolicy: IfNotPresent
#增加command字段与参数:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在 不修改Kubernetes核心代
码的同时扩展Kubernetes API
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
根据metricserver.yaml创建metric-server
kubectl create -f metricserver.yam
安装好后,可以使用top命令查看各个节点状态。
2、创建弹性伸缩资源
以nginx为例
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
labels:
app: nginx-test
name: nginx-test
namespace: nginx
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: nginx-test
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: nginx-test
spec:
nodeName: node1
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
resources:
requests:
cpu: "200m"
limits:
cpu: "400m"
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
最重要,一定要创建resources中的资源限额。
使用命令创建HPA
kubectl autoscale deployment nginx-test -n nginx --cpu-percent=20 --min=1 --max=10
测试成功 !
三、Redis数据库备份与恢复
使用Shell脚本备份数据
command.txt内容如下:
bgsave
redis_backup.sh内容如下:
#! /bin/sh
echo "redis数据开始备份!"
date=$(date +%Y-%m-%d-%-H:%M:%S)
echo "时间$date"
cat /Users/vimrus/Desktop/command.txt | redis-cli -h 127.0.0.1 -p 6379 --pipe
cp /usr/local/var/db/redis/dump.rdb /tmp/$date.rdb
echo "redis数据备份目录-/tmp/"$date.rdb;
echo "redis数据备份成功!"
数据恢复,可以将rdb文件拷贝至rdb工作目录下,覆盖原有rdb文件,redis重启时,可重新载入。
四、k8s 容器副本扩容
#kubectl scale --replicas=[副本数量] deployment/[deployment名称] -n [namespace]
kubectl scale --replicas=3 deployment/nginx-test -n nginx
实际效果展示
五、k8s升级与扩容
1.升级
yum install kubeadm-1.19.16-0 kubelet-1.19.16-0 kubectl-1.19.16-0 --disableexcludes=kubernetes
kubeadm upgrade apply 1.19.16
systemctl daemon-reload
systemctl restart kubelet
节点升级同样操作
2.扩容
安装docker,kubeadm,kubelet
master上执行
kubeadm token create --print-join-command
节点上执行
kubeadm join 192.168.52.129:6443 --token 8r7f65.674rv6mwv9gszmu1 --discovery-token-ca-cert-hash sha256:456d9003a9f05f313ab3ab6c3e74fe7ec9a4a4492a33ee736fcfd674fc6df6e1
六、Nginx篇
1)负载均衡
在Nginx配置文件中添加upsteam,在server-location下配置proxy_pass为上游服务起集群
http {
upstream httpds{
server 192.168.52.131 weight=8;
server 192.168.52.132 weight=8;
server 192.168.52.131 weight=9;
... ...
}
server {
listen 80;
server_name www.huangyajie.*;
location / {
ssi on;
proxy_pass http://httpds; #配置反向代理的上游
}
}
}
2)动静分离
环境:
Nginx主机
Tomcat主机
第一步:配置Nginx
vim /usr/local/nginx/conf/nginx.conf
location / {
proxy_pass http://192.168.52.131:8080;
}location /css {
root html;
index index.html index.htm;
}
配置反向代理,以及静态文件目录
第二步:将Tomcat主机上CSS部分移到Nginx主机html目录下
第三步:重启Nginx
systemctl reload nginx
完成~