第一课 k8s介绍安装_ swap s ^ (,字节跳动+腾讯+华为+小米+阿里面试题分享

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

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部署安装
  1. 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命令查看是否已经正确加载所需的内核模块。

  1. 安装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): (idu):(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

  1. 如果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配置私有仓库
  1. Harbor 是一个开源镜像仓库,可通过基于角色的访问控制来保护镜像,新版本的Harbor还增加了扫描镜像中的漏洞并将镜像签名为受信任。作为CNCF孵化项目,Harbor提供合规性,性能和互操作性,以帮助你跨Kubernetes和Docker等云原生计算平台持续,安全地管理镜像。Harbor组件均以Docker容器方式启动,因此,你可以将其部署在任何支持Docker的Linux发行版上。
  2. 安装centos7 192.128.66.100 4G 100G的docker环境。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 修改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

  1. 安装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

  1. 离线下载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

  1. 测试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

  1. 在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
  1. 查看Pod中具体错误:kubectl describe pod nginx-app-684bd4f4c-4mdzn
  2. 查看Pod中容器的报错日志:kubectl log myapp-pod -c test(test容器)
  3. 先删除所有的deployment,这里如果只删除pod, 会为了满足预期重启其他pod
  • kubectl delete deployment --all

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值