先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
sysctl -p /etc/sysctl.d/kubernetes.conf
调整系统时区
#设置系统时区为 中国/上海
timedatectl set-timezone Asia/Shanghai
#将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
关闭不需要的服务
systemctl stop postfix && systemctl disable postfix
设置 rsyslogd 和 systemd journald
#创建持久化保存日志的目录
mkdir /var/log/journal
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
#持久化保存到磁盘
Storage=persistent
#压缩历史日志
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
#最大占用空间 10G
SystemMaxUse=10G
#单日志文件最大 200M
SystemMaxFileSize=200M
#日志保存时间 2 周
MaxRetentionSec=2week
#不将日志转发到 syslog
ForwardToSyslog=no
EOF
systemctl restart systemd-journald
升级系统内核为 4.44(可选)
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,查看内核命令uname -r,升级步骤如下:
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt
#设置开机从新内核启动
grub2-set-default “CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)”
重启后产看内核变化啦
reboot
uname -r
sudo setenforce 0
sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config
关闭防火墙和ipttables 如果不设置后面加入节点可能有问题如:couldn’t validate the identity of the API Server
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
sudo sysctl --system
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
4.2 虚拟机Kubeadm部署安装
- kube-proxy开启ipvs的前置条件
由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe – ip_vs
modprobe – ip_vs_rr
modprobe – ip_vs_wrr
modprobe – ip_vs_sh
modprobe – nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
脚本创建了的/etc/sysconfig/modules/ipvs.modules文件, 保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。
- 安装docker软件
安装依赖库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
导入阿里云的镜像仓库
sudo yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下载安装docker
yum update -y && yum install -y docker-ce
创建/etc/docker目录
mkdir /etc/docker
设置一下daemon中cgroup为syetemd 默认有两个cgroup 存储文件格式为json-flle,大小为100Mb
cat > /etc/docker/daemon.json <<EOF
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
}
}
EOF
创建目录存放docker配置文件
mkdir -p /etc/systemd/system/docker.service.d
#重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
第五节 环境的基本安装
5.1安装Kubeadm
配置K8S的yum源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm, kubectl, and kubelet.
sudo yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
sudo systemctl restart kubelet
sudo systemctl enable kubelet
5.2 初始化节点
生成默认初始化模板
kubeadm config print init-defaults > kubeadm-config.yaml
修改默认初始化模板
advertiseAddress: 192.168.66.10 # 修改ip地址
kubernetesVersion: v1.18.0 # 修改版本
加上podSubnet(不要忘记啦),如果忘记了 后期安装网络后需要到配置文件中修改。
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
添加字段 修改ipvs调度方式
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
先拉取所需要的镜像 运行脚本如下 镜像到了阿里云的杭州机房的容器仓库里,拉取还是比较快的
echo “”
echo “"
echo “Pull Kubernetes v1.18.0 Images from aliyuncs.com …”
echo "”
echo “”
MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings
拉取镜像
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.18.0
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.18.0
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.18.0
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.18.0
docker pull ${MY_REGISTRY}/k8s-gcr-io-etcd:3.4.3-0
docker pull ${MY_REGISTRY}/k8s-gcr-io-pause:3.2
docker pull ${MY_REGISTRY}/k8s-gcr-io-coredns:1.6.7
添加Tag
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag ${MY_REGISTRY}/k8s-gcr-io-etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag ${MY_REGISTRY}/k8s-gcr-io-pause:3.2 k8s.gcr.io/pause:3.2
docker tag ${MY_REGISTRY}/k8s-gcr-io-coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
echo “”
echo “"
echo “Pull Kubernetes v1.18.0 Images FINISHED.”
echo “into registry.cn-hangzhou.aliyuncs.com/openthings, "
echo " by openthings@https://my.oschina.net/u/2306127.”
echo "”
echo “”
根据模板初始化节点
kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
配置一下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
安装fannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果拉取镜像失败
https://github.com/coreos/flannel/releases 方仓库下载镜像下载flanneld-v0.12.0-arm64.docker
docker load < flanneld-v0.12.0-arm64.docker
sudo systemctl restart kubelet
kubectl get nodes
kubectl get pod --all-namespaces
添加从节点
scp ~/flanneld-v0.12.0-arm64.docker root@k8s-node1:~/
scp ~/flanneld-v0.12.0-arm64.docker root@k8s-node2:~/
docker load < flanneld-v0.12.0-arm64.docker
kubeadm join 192.168.66.10:6443 --token abcdef.0123456789abcdef
–discovery-token-ca-cert-hash sha256:6e09e93318ce8126e04eb924a1c0043719614ac07e6e2203c44a6bdcdd86f4b4
- 如果github下载速度过慢。可以尝试下面阿里云容器镜像服务ACR。
- https://www.aliyun.com/product/acr
docker pull registry.cn-hangzhou.aliyuncs.com/chentging/flannel/flannel:v0.12.0-amd64
为镜像打tag,保持和yaml文件一样。
docker tag registry.cn-hangzhou.aliyuncs.com/chentging/flannel/flannel:v0.12.0-amd64 quay.io/coreos/flannel:v0.12.0-amd64
2. 成功构建集群环境。
5.3 Harbor配置私有仓库
- Harbor 是一个开源镜像仓库,可通过基于角色的访问控制来保护镜像,新版本的Harbor还增加了扫描镜像中的漏洞并将镜像签名为受信任。作为CNCF孵化项目,Harbor提供合规性,性能和互操作性,以帮助你跨Kubernetes和Docker等云原生计算平台持续,安全地管理镜像。Harbor组件均以Docker容器方式启动,因此,你可以将其部署在任何支持Docker的Linux发行版上。
- 安装centos7 192.128.66.100 4G 100G的docker环境。
- 修改daemon.json, 因为不需要购买一个https证书,这里做一个局域网内部的证书。
四台机器都加上
cat > /etc/docker/daemon.json <<EOF
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“insecure-registries”: [“https://hub.qnhyn.com”]
}
EOF
重启docker
systemctl restart docker
systemctl restart kubelet
- 安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
用来拉取文件到xshell中
yum -y install lrzsz
- 离线下载Harbor开源镜像仓库
- 链接: https://pan.baidu.com/s/1IKhBILaocDJkUveG-rXgVQ 提取码: 7bts
解压
tar -zxvf harbor-offline-installer-v1.10.1.tgz
创建证书目录,并赋予权限
mkdir -p /data/cert && chmod -R 777 /data/cert && cd /data/cert
生成私钥,需要设置密码 两次密码输入保持一致
openssl genrsa -des3 -out harbor.key 2048
生成CA证书,需要输入密码
openssl req -sha512 -new
-subj “/C=CN/ST=JS/L=WX/O=zwx/OU=qnhyn/CN=hub.qnhyn.com”
-key harbor.key
-out harbor.csr
备份证书
cp harbor.key harbor.key.org
退掉私钥密码,以便docker访问(也可以参考官方进行双向认证)
openssl rsa -in harbor.key.org -out harbor.key
使用证书进行签名
openssl x509 -req -days 365 -in harbor.csr -signkey harbor.key -out harbor.crt
修改配置文件 下面字段
hostname: hub.qnhyn.com
certificate: /data/cert/harbor.crt
private_key: /data/cert/harbor.key
harbor_admin_password: Harbor12345
#安装
./install.sh --with-clair
物理机上配置hosts 192.168.66.100 hub.qnhyn.com
https://hub.qnhyn.com/ # 账号admin # 密码 Harbor12345
- 测试Harbor开源镜像仓库是否正确安装。
k8s任意一节点上 用户名admin 密码Harbor12345
docker login https://hub.qnhyn.com
推送镜像前必须先标记镜像
docker tag quay.io/coreos/flannel:v0.12.0-amd64 hub.qnhyn.com/library/quay.io/coreos/flannel:v0.12.0-amd64
推送镜像
docker push hub.qnhyn.com/library/quay.io/coreos/flannel:v0.12.0-amd64
测试myapp
docker pull registry.cn-hangzhou.aliyuncs.com/k8s-t/wangyanglinux:v1
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-t/wangyanglinux:v1 myapp
kubectl run nginx-deployment --image=hub.qnhyn.com/library/myapp --port=80
通过详细信息查看ip 10.244.2.4
kubectl get pod -o wide
查看部署
kubectl get deployment
访问容器
curl 10.244.2.4
curl 10.244.2.4
curl 10.244.2.4/hostname.html
进行扩容
kubectl scale – replicas=3 deployment/nginx-deployment
- 在K8S v1.18.0以后,–replicas已弃用 ,推荐用 deployment 创建 pods可以使用
- kubectl apply -f nginx-deployment.yaml
- kubectl get pods / kubectl get deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
创建2个nginx容器
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports: - containerPort: 80
- 查看Pod中具体错误:kubectl describe pod nginx-app-684bd4f4c-4mdzn
- 查看Pod中容器的报错日志:kubectl log myapp-pod -c test(test容器)
- 先删除所有的deployment,这里如果只删除pod, 会为了满足预期重启其他pod
- kubectl delete deployment --all
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
e pod nginx-app-684bd4f4c-4mdzn
9. 查看Pod中容器的报错日志:kubectl log myapp-pod -c test(test容器)
10. 先删除所有的deployment,这里如果只删除pod, 会为了满足预期重启其他pod
- kubectl delete deployment --all
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-PE1ZBJ1b-1713236617306)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!