泷羽sec------k8s的基础学习
声明! 学习视频来自B站up主 泷羽sec
有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
Kubernetes(k8s)**
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
Kubernetes 通常简称为 K8s,是一个开源的容器编排平台。它可以自动化部署、扩展和管理容器化应用程序,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。
1 Kubernetes 的核心概念
-
Pod:是 Kubernetes 中最小的可部署单元,可包含一个或多个容器,这些容器共享网络命名空间和存储卷,一起被调度和管理。
-
Deployment:用于管理 Pod 的副本数量和更新策略,确保应用始终保持指定数量的副本在运行,可实现滚动更新等功能。
-
Service:定义一组 Pod 的访问方式,提供稳定的 IP 地址和端口,让外部可以访问到一组 Pod。例如,一个后端服务可能由多个 Pod 组成,Service 可以将这些 Pod 组合在一起,让前端应用能够通过一个统一的服务地址访问后端服务,并且实现负载均衡,确保流量均匀地分配到各个 Pod。
-
Node:是 Kubernetes 中的工作节点,可以是物理服务器或虚拟机。每个 Node 上运行着
Kubelet
和容器运行时,负责管理容器的生命周期。
2 安装 Kubernetes
- 安装
Minikube
(用于本地开发的 Kubernetes 环境):下载安装包,根据操作系统选择合适版本,按照安装向导进行操作。 - 启动
Minikube
:打开终端,运行minikube start
命令。
安装步骤,ubuntu为例
-
步骤一:更新软件包列表
- 打开终端,输入
sudo apt-get update
命令。这一步会更新系统中的软件包索引,确保你可以获取到最新版本的软件包信息。
- 打开终端,输入
-
步骤二:安装依赖包(如果尚未安装)
- 如前面提到的,需要安装
curl
和apt-transporters-https
。使用命令apt-get install -y curl apt-transport-https
进行安装。
- 如前面提到的,需要安装
-
步骤三:下载
Minikube
二进制文件-
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
-
-
步骤四:赋予可执行权限
-
下载完成后,文件
minikube-linux-amd64
是一个二进制文件,需要赋予它可执行权限。使用命令sudo chmod +x minikube-linux-amd64
-
-
步骤五:移动到可执行文件路径(可选)
-
为了方便在任何目录下都能使用
Minikube
命令,可以将这个二进制文件移动到系统的可执行文件路径中,如/usr/local/bin/
。使用命令sudo mv minikube-linux-amd64 /usr/local/bin/minikube
-
-
步骤六:启动
以普通用户启动(这个是它默认的) sudo usermod -aG docker 【用户名】 && newgrp docker 把普通用户加入到组docker中,若没有该组,则会创建 minikube start --force //这个是当前用户root的话,进行强制启动
-
步骤七:如果在启动时,拉取不了镜像,可手工使用docker拉取
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.45
然后输入上面的docker指令,手工拉取
指定镜像启动
minikube delete
minikube start --force --memory=1690mb --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.44'
成功搭建集群
3 部署应用到 Kubernetes
安装kubectl
apt-get install kubectl
不清楚的命令等记得查看这个命令的帮助文档
创建一个 Deployment 并部署 Nginx 服务器。
kubectl create deployment nginx --image=nginx
查看 Deployment
kubectl get deployments
创建一个 Service,并让外部访问 Nginx 服务器
kubectl expose deployment nginx --port=80 --type=NodePort
expose:
-
这是一个子命令,用于将现有的 Kubernetes 资源(如 Deployment、Pod 等)暴露为一种新的资源类型(通常是 Service),以便可以从集群外部或内部的其他部分访问该资源。
-
--type=NodePort
:-
定义 Service 的类型为
NodePort
。在 Kubernetes 中,Service 有多种类型,如
ClusterIP
(仅在集群内部可访问)、NodePort
(通过集群中每个节点的特定端口可访问)和LoadBalancer
(通常由云提供商提供负载均衡器)等。当选择
NodePort
类型时,Kubernetes 会在集群的每个节点上分配一个特定的端口范围(通常在 30000 - 32767 之间),外部可以通过任何节点的 IP 地址和这个特定的端口来访问 Service 背后的 Pod。
-
查看 Service
kubectl get services
4 访问应用
在 Service 信息中找到 NodePort
的端口号,使用“<Minikube IP>:<NodePort>
”在浏览器中访问 Nginx 服务器。
查看服务的详细信息,里面可找到NodePort
的端口号
kubectl describe service
5 扩展应用
扩展 Deployment 的副本数量
kubectl scale deployment nginx --replicas=3
- scale:
- 这是一个子命令,用于调整资源的副本数量。在 Kubernetes 中,可以通过调整副本数量来实现应用的水平扩展或收缩。
- deployment nginx:
- 指示要调整副本数量的资源是名为 “nginx” 的 Deployment。Deployment 负责管理应用的副本,确保在集群中始终运行指定数量的副本。
- --replicas=3:
- 指定要将副本数量设置为 3。这意味着 Kubernetes 将确保有三个运行中的副本(Pod)来承载 “nginx” 应用。如果当前副本数量小于 3,Kubernetes 会创建新的 Pod 以达到目标数量;如果当前副本数量大于 3,Kubernetes 会逐渐停止多余的 Pod,直到副本数量为 3。
查看副本数量
kubectl get deployments
6 更新应用
更新 Deployment 的镜像
kubectl set image deployment/nginx nginx=new-image:version
- set image:
- 这是一个子命令,用于设置资源(如 Deployment、Pod 等)中容器的镜像。
- deployment/nginx:
- 指定要更新的资源为名为 “nginx” 的 Deployment。
nginx=new-image:version
:- 这里 “nginx” 是 Deployment 中容器的名称(通常在 Deployment 的 YAML 定义中指定)。“
new-image:version
” 是新的镜像名称和版本标签。例如,如果原来的容器使用的镜像是 “old-image:1.0”,现在要更新为 “new-image:2.0”,就可以使用这条命令进行更新。
- 这里 “nginx” 是 Deployment 中容器的名称(通常在 Deployment 的 YAML 定义中指定)。“
查看更新进度
kubectl rollout status deployment/nginx
rollout status
是用于检查部署(Deployment)的滚动更新状态的子命令。
本文来自博客园,作者:whitehe,转载请注明原文链接:https://www.cnblogs.com/whitehe/p/18578422