泷羽sec------k8s的基础学习

声明! 学习视频来自B站up主 泷羽sec
有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

Kubernetes(k8s)**

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

Kubernetes 通常简称为 K8s,是一个开源的容器编排平台。它可以自动化部署、扩展和管理容器化应用程序,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。

1 Kubernetes 的核心概念

  1. Pod:是 Kubernetes 中最小的可部署单元,可包含一个或多个容器,这些容器共享网络命名空间和存储卷,一起被调度和管理。

  2. Deployment:用于管理 Pod 的副本数量和更新策略,确保应用始终保持指定数量的副本在运行,可实现滚动更新等功能。

  3. Service:定义一组 Pod 的访问方式,提供稳定的 IP 地址和端口,让外部可以访问到一组 Pod。例如,一个后端服务可能由多个 Pod 组成,Service 可以将这些 Pod 组合在一起,让前端应用能够通过一个统一的服务地址访问后端服务,并且实现负载均衡,确保流量均匀地分配到各个 Pod。

  4. Node:是 Kubernetes 中的工作节点,可以是物理服务器或虚拟机。每个 Node 上运行着 Kubelet 和容器运行时,负责管理容器的生命周期。

2 安装 Kubernetes

  1. 安装 Minikube(用于本地开发的 Kubernetes 环境):下载安装包,根据操作系统选择合适版本,按照安装向导进行操作。
  2. 启动 Minikube:打开终端,运行minikube start命令。

安装步骤,ubuntu为例

  • 步骤一:更新软件包列表

    • 打开终端,输入sudo apt-get update命令。这一步会更新系统中的软件包索引,确保你可以获取到最新版本的软件包信息。
  • 步骤二:安装依赖包(如果尚未安装)

    • 如前面提到的,需要安装curlapt-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
      

image

  • 步骤六:启动

    以普通用户启动(这个是它默认的)
    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指令,手工拉取

image

指定镜像启动

minikube delete
minikube start --force  --memory=1690mb --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.44'

成功搭建集群

image

3 部署应用到 Kubernetes

安装kubectl

apt-get install kubectl

不清楚的命令等记得查看这个命令的帮助文档

创建一个 Deployment 并部署 Nginx 服务器。

kubectl create deployment nginx --image=nginx

查看 Deployment

kubectl get deployments

image

创建一个 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。

image

查看 Service

kubectl get services

image

4 访问应用

在 Service 信息中找到 NodePort 的端口号,使用“<Minikube IP>:<NodePort>”在浏览器中访问 Nginx 服务器。

查看服务的详细信息,里面可找到NodePort 的端口号

kubectl describe service

image

5 扩展应用

扩展 Deployment 的副本数量

kubectl scale deployment nginx --replicas=3
  1. scale
    • 这是一个子命令,用于调整资源的副本数量。在 Kubernetes 中,可以通过调整副本数量来实现应用的水平扩展或收缩。
  2. deployment nginx
    • 指示要调整副本数量的资源是名为 “nginx” 的 Deployment。Deployment 负责管理应用的副本,确保在集群中始终运行指定数量的副本。
  3. --replicas=3
    • 指定要将副本数量设置为 3。这意味着 Kubernetes 将确保有三个运行中的副本(Pod)来承载 “nginx” 应用。如果当前副本数量小于 3,Kubernetes 会创建新的 Pod 以达到目标数量;如果当前副本数量大于 3,Kubernetes 会逐渐停止多余的 Pod,直到副本数量为 3。

查看副本数量

kubectl get deployments

image

6 更新应用

更新 Deployment 的镜像

kubectl set image deployment/nginx nginx=new-image:version
  1. set image
    • 这是一个子命令,用于设置资源(如 Deployment、Pod 等)中容器的镜像。
  2. deployment/nginx
    • 指定要更新的资源为名为 “nginx” 的 Deployment。
  3. nginx=new-image:version
    • 这里 “nginx” 是 Deployment 中容器的名称(通常在 Deployment 的 YAML 定义中指定)。“new-image:version” 是新的镜像名称和版本标签。例如,如果原来的容器使用的镜像是 “old-image:1.0”,现在要更新为 “new-image:2.0”,就可以使用这条命令进行更新。

查看更新进度

kubectl rollout status deployment/nginx

rollout status 是用于检查部署(Deployment)的滚动更新状态的子命令。

image

posted @ 2024-11-09 19:36  whitehe  阅读(14)  评论(0)    收藏  举报  来源