Kubernetes(k8s) 笔记总结(一)

news2024/11/19 14:35:24

文章目录

  • 1. 云平台
  • 2. 私有网络 VPC(重点!!!)
  • 3. Kubernetes 介绍
  • 4. k8s 架构
  • 5. kubectl 和 kubeadm
  • 6. 三台云服务器的 安装部署
  • 7. Kubernetes 环境搭建
    • 7.1 安装docker环境
    • 7.2 安装k8s的 预备环境
  • 8. kubernetes集群 安装的三大件(kubelet、kubeadm、kubectl)
  • 9. kubernetes集群 初始化主节点
  • 10. kubernetes集群 将Worker节点加入集群
  • 11. kubernetes集群 集群自我修复能力
  • 12. k8s的join令牌过期解决方式
  • 13. k8s 部署dashboard

1. 云平台


国内常见云平台:

  • 阿里云、百度云、腾讯云、华为云、青云…

国外常见云平台:

  • 亚马逊 AWS、微软 Azure …

注册云平台:

  • 阿里云 aliyun.com
  • 腾讯云 cloud.tencent.com
  • 华为云 cloud.huawei.com
  • 青云 qingcloud.com
  • 百度云 cloud.baidu.com

Kubernetes就是青云开源的项目。

环境:准备一台云服务器(按量付费) 、搭建好nginx环境。

云服务器按量付费的好处:
在这里插入图片描述

2. 私有网络 VPC(重点!!!)


集群的一个小知识点:
在这里插入图片描述

集群之间的访问一般都是走私有IP进行访问。一方面私有IP访问快,也无需担心宽带等情况。


可以去阿里云配一个VPC私有网络。

VPC概念:私有网络 也叫 专有网络。

首先,理解子网掩码概念:

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。

例如:192.168.0.0/16:

  • 后面的16:代表16位掩码。

在线网络计算器:https://www.sojson.com/convert/subnetmask.html

可以通过一些网络计算器得到二进制对应数据:
在这里插入图片描述

定义的18位掩码那就是对应ip二进制的前18位固定,后面的可以动态变化,以此进行分配ip的效果。

在这里插入图片描述
注意:其中,网络(192.168.0.0) 和 广播(192.168.255.255)不能分配,因此不可用!

交换机:可以继续向下进行分配管理IP。

  • 一般一个VPC下面有多个交换机。
    在这里插入图片描述

总而言之,VPC就是起到了一个局域隔离的效果,好处就是多个微服务或者其他系统服务器,只要都处于同一个VPC下就可以相互互通,无需访问外网。效果更好,安全更高

一般公司,开发环境、测试环境、生产环境各都有一个VPC。


服务器配置:
在这里插入图片描述

3. Kubernetes 介绍


Kubernetes的作用就是负责管理的docker容器的。(专业术语:大规模容器编排系统。)

平时,创建一两个docker容器,手动操作命令,还算方便。但是,如果是几十个、上百个docker容器管理起来就非常麻烦。

官方网站:https://kubernetes.io/zh-cn/

kubernetes特性:
● 服务发现和负载均衡(容器发现 和 分配请求)
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
● 存储编排 (创建一个容器就要有对应的存储,可以让k8s来管理。)
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
● 自动部署和回滚 (自动部署项目 和 回滚到之前版本等)
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
● 自动完成装箱计算 (管理容器指标之类的)
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
● 自我修复 (自我修复)
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
● 密钥与配置管理 (管理配置的东西)
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

总而言之,k8s提供了一个可弹性运行分布式系统的框架。

k8s也可以轻松管理系统的Canary部署(灰度发布)。

4. k8s 架构


k8s工作方式:
Kubernetes Cluster = N Master Node + N Worker Node:N主节点+N工作节点; N>=1 (集群架构常用的一种策略。)

硅谷老师解释的k8s架构如下:
在这里插入图片描述
有决策的、存资料的、调度的、传递消息的、管理节点的等等一些系列角色之间的来回交互,实现整个k8s。


Control Plane(控制面板,总部):(master node 主节点)

  • kubectl:是程序员要操作的命令行,发给controller-manager。其实真正的决策者是kubectl
  • Control Plane(控制面板,总部):就是master节点,来操作worker 节点。并且自身由多个集群节点组成。
  • controller-manager(决策者):负责决策发号施令。
  • API server(秘书部)作用:控制集群之间的交互访问,保证每个server、节点的互通
  • ETCD(键值数据库):存储一些配置。
  • scheduler(调度者):动态计算一些内容,并且调度。

worker node 工作节点:

  • kubelet(厂长):负责管理worker node。
  • k-proxy(门卫大爷):node节点中的k-proxy与其他节点的k-proxy是同步的,相当于一个导游,起到一个指引的作用。因此,k-proxy是负责管理所有集群里面的网络访问的

5. kubectl 和 kubeadm


kubectl(kube control):一些k8s命令,由程序员操作。

kubeadm(kube admin):帮助程序员管理集群的。

  • 使用kubeadm来管理搭建k8s集群非常方便。

架构方式如下:
在这里插入图片描述

6. 三台云服务器的 安装部署


先准备三台云服务器(按需付费即可,不用时关闭!)。

  • 一台主节点、两台子节点。
    在这里插入图片描述

三台服务器都分配到一个VPC下面,通过分配的内网IP,之间来回ping通即可。
在这里插入图片描述
没有公网还需要申请公网IP。

7. Kubernetes 环境搭建

7.1 安装docker环境


给三台机器安装Docker环境:

# 1. 卸载之前版本docker(一般不用)
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 2. 安装一些yum-utils工具
sudo yum install -y yum-utils
# 3. 配置docker的yum源,就是告诉linux去哪里下载docker
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4. 一般默认下载最新版本的docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

# 5. 配置docker加速镜像(阿里云搜索就行) 跳过
# 之后,进行查看是否配置成功
docker info 

# 6. 之后就是启动docker等操作。

7.2 安装k8s的 预备环境


服务器要求:

  • 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令
  • 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存) 和 2 CPU 核或更多
  • 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
    • 设置防火墙放行规则
  • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
    • 设置不同hostname
  • 开启机器上的某些端口。请参见这里 了解更多详细信息。
    • 内网互信
  • 禁用交换分区。为了保证 kubelet 正常工作,你 必须 禁用交换分区。
    • 永久关闭

K8s官方要求以下相关操作:

  • 修改hostname名称 和 永久关闭交换分区。
# 1. 各个机器设置自己的域名 和 修改hostname文件一样
hostnamectl set-hostname xxxx

# 2. 将 SELinux 设置为 permissive 模式(相当于将其禁用)
# 临时禁用
sudo setenforce 0 
# 修改配置文件永久禁用
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 3. 关闭swap分区
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 4. 允许 iptables 检查桥接流量 (流量桥接:ipv6桥接到ipv4网卡上)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

8. kubernetes集群 安装的三大件(kubelet、kubeadm、kubectl)


kubeadm(kube admin)、kubectl(kube control)、kubelet(厂长)。

安装kubelet、kubeadm、kubectl:

# 1. 配置阿里的kubernetes的yum镜像。
cat <<EOF | sudo tee /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
exclude=kubelet kubeadm kubectl
EOF

# 2. 安装kubelet、kubeadm、kubectl
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

# 3. 启动kubelet
sudo systemctl enable --now kubelet

kubelet 现在每隔几秒就会重启,因为它陷入一个等待kubeadm指令的死循环。因此,通过systemctl status kubelet检查状态的时候有时候正常,有时候关闭。

9. kubernetes集群 初始化主节点


第一步:下载各个机器需要的镜像(可以考虑按需引入,哪个节点需要啥就拉下啥,目前为了防止用到就每个节点全部下载下来了)。

# 1. 生成一个images.sh脚本文件
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF

# 2. 执行脚本文件
chmod +x ./images.sh && ./images.sh

# 上面就是写了个脚本循环执行docker pull命令没什么困难。

第二步:添加主节点域名,并且初始化主节点。

# 1. 所有机器添加master域名映射(以下需要修改为自己的)
# 此处用的是VPC内网的地址,不是公网!通过ip a命令查看。
echo "172.31.0.2  cluster-endpoint" >> /etc/hosts


# 2. 主节点初始化(只在master节点进行初始化。)
kubeadm init \
# apiserver-advertise-address对应master所在节点的ip
--apiserver-advertise-address=172.31.0.2 \
# control-plane-endpoint控制面板:这里对应上面master的域名。
--control-plane-endpoint=cluster-endpoint \
# 镜像仓库阿里云的
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
# k8s的版本
--kubernetes-version v1.20.9 \
# service的网络范围 
--service-cidr=10.96.0.0/16 \
# network的网络范围
--pod-network-cidr=192.168.0.0/16

# 要注意:上面的所有网络范围是不能重叠的。

在这里插入图片描述

看到这句话就代表初始化成功了:在这里插入图片描述
根据英文意思不难翻译出以下几个内容:
在这里插入图片描述
在这里插入图片描述
上图复制:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join cluster-endpoint:6443 --token hums8f.vyx71prsg74ofce7 \
    --discovery-token-ca-cert-hash sha256:a394d059dd51d68bb007a532a037d0a477131480ae95f75840c461e85e2c6ae3 \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join cluster-endpoint:6443 --token hums8f.vyx71prsg74ofce7 \
    --discovery-token-ca-cert-hash sha256:a394d059dd51d68bb007a532a037d0a477131480ae95f75840c461e85e2c6ae3

可以通过kubectl get nodes命令查看集群所有节点:

[root@k8s-master ~]  mkdir -p $HOME/.kube
[root@k8s-master ~]  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]  sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s-master ~]  kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   6m35s   v1.20.9

第三步:根据提示安装一个网络组件(只在master节点运行)。

  • 其他网络组件:https://kubernetes.io/docs/concepts/cluster-administration/addons/
    目前,选用calico的组件。
# 1. 下载calico的配置文件
curl https://docs.projectcalico.org/manifests/calico.yaml -O

# 2. kubectl通过这个文件进行一些列的下载安装配置操作。
kubectl apply -f calico.yaml

第四步:查看kubectl里面运行了几个Pod。

  • 运行中的应用在docker里面叫容器,在k8s里面叫Pod。
# 运行中的应用在docker里面叫容器,在k8s里面叫Pod
kubectl get pods -A

在这里插入图片描述
在这里插入图片描述

踩坑:
在这里插入图片描述

# 1. 下载对应版本呢
curl https://docs.projectcalico.org/v3.18/manifests/calico.yaml -O
# 2. 先使用delete清除资源,再apply创建资源
kubectl delete -f calico.yaml
kubectl apply -f calico.yaml
kubectl get pods -A # 查看容器是否准备成功。
kubectl get nodes # 查看节点是否准备成功。

等了好久终于启动起来了。
在这里插入图片描述

10. kubernetes集群 将Worker节点加入集群


第一步:在其他两个worker节点上,执行kubeadm join命令:

  • 在master节点,重新生成新令牌:kubeadm token create --print-join-command。
# 1. 新增workder节点。
kubeadm join cluster-endpoint:6443 --token rh26mq.26bfqa6f6ezdqna4 \
--discovery-token-ca-cert-hash sha256:dd7200e7bada2811e9f6601a3326d62ada73236d6f40efeb90deda188171931e

# 补充:初始化后刚生成的令牌时效只有24小时 或者 不小心清理了。就可以通过以下命令重新生成新令牌。在master执行以下命令:
kubeadm token create --print-join-command

# 2. 主节点上查看看
kubectl get nodes

在这里插入图片描述

注意:只有主节点才能使用kubectl命令,在其他节点上只会被拒绝。
在这里插入图片描述

第二步:同样还是要等所有的pods应用都就绪才执行下一步操作。
在这里插入图片描述

在这里插入图片描述

到了这里等所有pods应用都就绪并且status为running,k8s集群就搭建成功。

11. kubernetes集群 集群自我修复能力


无论哪个节点重启,关机,故障了。都不会影响已经搭建好的k8s集群。

在这里插入图片描述
重启后可能会看到有些状态变成了error,但是不用担心!k8s会自动修复,过一段时间就会好了。

12. k8s的join令牌过期解决方式


# 在master执行以下命令:
kubeadm token create --print-join-command

在这里插入图片描述

13. k8s 部署dashboard


其实就是提供了一个web的可视化页面,就不用再去通过命令行去查看了。

kubernetes官方提供的可视化界面
https://github.com/kubernetes/dashboard


第一步:直接通过官方dashboard的配置文件进行安装。

# 在master节点执行
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

第二步:同样等待pods就绪后,设置访问端口。

# 1. 在master执行以下命令,将文件中的type: ClusterIP改为type: NodePort
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
# 作用:相当于把web访问页面的端口暴露到机器上

# 2. 获取端口,找到端口,在安全组放行
kubectl get svc -A |grep kubernetes-dashboard

在这里插入图片描述
上面对应的31287便是暴露后的端口,还需要配置安全组。

访问: https://集群任意IP:端口      https://139.198.165.238:31287

第三步:登录需要token令牌,所以要创建访问的账号,获取token令牌。

  • 创建一个dash.yaml文件。
#创建访问账号,准备一个yaml文件; vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

之后,kubectl apply -f dash-usr.yaml k8s应用一下这个配置即可。
在这里插入图片描述

最后,获取到访问令牌就可以登录了。

#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

在这里插入图片描述

这样dashboard就部署好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三句话,让Ai帮你画18万张图

本文介绍Stable Diffusion的快速上手&#xff0c;本地部署&#xff0c;以及更多有趣的玩法展示。 在 DALL-E 2 和 Imagen 之后&#xff0c;AI绘图领域又一个热乎的深度学习模型出炉——Stable Diffusion 。8月份发布的 Stable Diffusion 更加高效且轻量&#xff0c;可以在消费…

P4:Transforms的使用

transform.py就像是一个工具箱&#xff0c;里面有很多工具&#xff08;如&#xff1a;totensor、resize等不同的工具&#xff09;。 使用规则&#xff1a; 拿特定格式的图片&#xff0c;通过使用工具&#xff0c;得到想要的结果。 1、transforms.ToTensor()的使用 1、作用&a…

实战1:基于tensorflow卷积网络实现面部关键点检测详细教程(代码+数据)

项目概述: 此任务的目标是预测面部图像上的关键点位置。这可以用作多个应用程序中的构建块,例如:检测面部关键点是一个非常具有挑战性的问题。人脸特征因人而异,即使是单个人,由于 3D 姿势、大小、位置、视角和光照条件等因素也存在很大差异。 直接上结果: 数据集描…

JSP SSM 个人博客系统系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 个人博客系统系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

vue3-Teleport笔记

简单来写一下Teleport src/components/TeleportLearn.vue <script setup></script><template><div><Teleport to"body"><div>你好</div></Teleport></div> </template><style scoped></style&…

NVMe IO数据传输如何选择PRP or SGL?

在Host与Controller之间有数据交互时&#xff0c;Controller会多次访问Host内存。比如执行NVMe Read/Write:当Host下发NVMe Write命令时&#xff0c;Host会先放数据放在Host内存中&#xff0c;然后通知Controller过来取数据。Controller接到信息后&#xff0c;会通过PCIe Memor…

Python下载ts文件视频并合并

目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8&#xff0c;并做相应处理 2.下载ts文件 三、合并ts文件 一、ts文件的由来 ts文件&#xff0c;ts即"Transport Stream"的缩写&#xff0c;特点就是要求从视频流的任一片段开始都是可以独立解码的&#x…

C 程序设计教程(06)—— C 语言的运算符与表达式

C 程序设计教程&#xff08;06&#xff09;—— C 语言的运算符与表达式 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;0…

【每日一题】【LeetCode】【第七天】盛最多水的容器

解决之路 因为是周日&#xff0c;找个中等题挑战一下。 题目描述 测试案例&#xff08;部分&#xff09; 第一次 想一下&#xff0c;因为涉及到底乘高&#xff0c;所以不能排序。逆序也没必要。 简化一下题干&#xff0c;盛水最多&#xff0c;也就是算面积最大&#xff0c…

【北邮果园大三上】运筹学期中前

第一章.线性规划 1.1例题 根据现实世界中的问题建立模型 一般表达式 ①和式 ②向量式 1.2变化标准&#xff1a; 1.3线性规划求解的基础原理和单纯解法 1.3.1解 ①基础概念 基 可行解与基础解 其他分类 ②判断举例 原式子&#xff1a; 判断标准 将一个未知数作为常熟&#…

从Wireshark看TCP连接的建立与关闭

http://t.zoukankan.com/jonathanlin-p-4282582.html TCP是一种面向连接、可靠的协议。TCP连接的建立与断开&#xff0c;都是需要经过通信双方的协商。用一句话概括就是&#xff1a;三次握手say hello&#xff08;建立连接&#xff09;&#xff1b;四次握手say goodbye&#x…

蓝桥杯Python组排序算法与函数

目录 一、排序算法 二、排序函数 1、Python 的 sort() 函数和 sorted() 函数 2、sort() 例子 3、sorted() 例子 4、部分排序 三、例题 1、统计数字&#xff08;lanqiaoOJ题号535&#xff09; 2、错误票据&#xff08;lanqiaoOJ题号205&#xff09; 3、奖学金&#xf…

线程池 - ThreadPoolExecutor 详解

线程池 - ThreadPoolExecutor 详解 线程池 ThreadPoolExecutor 源码解析参考 juc 专栏系列文章。 基本概述 线程池&#xff1a;一个容纳多个线程的容器&#xff0c;容器中的线程可以重复使用&#xff0c;省去了频繁创建和销毁线程对象的操作。 线程池作用&#xff1a; 降低资…

【基础】Elasticsearch 基础

Elasticsearch 基本概念及使用Elasticsearch 基本概念ES 的简介及使用场景ES 基本概念ES 与 Kibana 的安装Elasticsearch 分词器ES 内置分词器ik 分词器的安装和使用Elasticsearch 基本使用索引操作数据的增删改查DSL 查询聚合查询批量操作Elasticsearch 基本概念 ES 的简介及…

多线程锁相关

日升时奋斗&#xff0c;日落时自省 目录 1、常见的锁策略 1.1、悲观锁vs乐观锁 1.2、轻量级锁vs重量级锁 1.3、自旋锁vs挂起等待锁 1.4、互斥锁vs读写锁 1.5、公平锁vs非公平锁 1.6可重入锁vs不可重入锁 2、CAS 2.1、CAS解析 2.2、CAS的应用场景 2.2.1、实现原子类 …

JavaSE学习day2_03, 算数运算符

5. 算术运算符 5.1 分类&#xff1a; - * / % 5.2 细节&#xff1a; 1.运算规则。跟小学数学是一模一样的 2.如果是整数跟整数进行计算&#xff0c;结果只能是整数。直接去掉小数部分&#xff0c;保留整数。如5/22,而不是2.5. 3.如果想要结果中有小数&#xff0c;需要有小…

(二)K8S Namespace 和 Label

Namespace 1、K8S集群中默认的Namespace为default&#xff0c;通过Namespace可以实现Pod之间的相互隔离&#xff08;如测试环境、生成环境的隔离&#xff09; 2、通过K8S的资源配置机制限定不同的Namespace对CPU、内存的使用&#xff0c;再通过K8S授权机制将不同的Namespace交…

启动ruoyi框架(初学)

启动ruoyi框架&#xff08;初学&#xff09;&#xff08;RuoYi&#xff09; Ruo Yi启动ruoyi框架&#xff08;初学&#xff09;&#xff08;[RuoYi](http://doc.ruoyi.vip/)&#xff09;一、简介二、项目启动1.前端模组&#xff1a;RUOYI-UI2.后端模组&#xff1a;3.环境要求&a…

Java版阿里云/腾讯云域名动态映射DDNS到动态IPv4或IPv6

1 介绍 利用业余时间&#xff0c;整合了一下阿里云和腾讯云动态域名映射&#xff0c;并将其使用spring boot做了一下封装&#xff0c;正好可以把家里的闲置电脑和IP v6利用起来&#xff0c;具体使用方法如下&#xff0c;或者参考对应项目的readme文档 2 地址 aliyun-ddns&am…

数据分析-深度学习 Day3

youtube课程地址&#xff1a;&#xff08;实时更新&#xff09;https://www.youtube.com/playlist?listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2Jwww.youtube.com/playlist?listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2JB站课程地址&#xff1a;李宏毅2021机器学习【week3】&#xff1a…