【K8S】Hello World

news2025/2/25 6:26:03

文章目录

  • 1 搭建本地测试环境
    • 1.1 安装 docker和 Colima
    • 1.2 安装 minikube
    • 1.3 启动minikube
    • 1.4 安装 kubectl
    • 1.5 注册 docker hub镜像仓库
  • 2 k8s核心资源概念
    • 2.1 Pod
    • 2.2 Deployment
    • 2.3 Service
    • 2.4 Ingress
  • 参考资料

1 搭建本地测试环境

本文以 mac os为例

1.1 安装 docker和 Colima

brew install docker
brew install colima

1.2 安装 minikube

  • minikube用来管理本地k8s集群
brew install minikube
  • 常用命令
minikube stop #不会删除任何数据,只是停止 VM 和 k8s 集群。

minikube delete #删除所有 minikube 启动后的数据。

minikube ip #查看集群和 docker enginer 运行的 IP 地址。

minikube pause #暂停当前的资源和 k8s 集群

minikube status #查看当前集群状态

1.3 启动minikube

minikube start --vm-driver docker --container-runtime=docker

1.4 安装 kubectl

brew install kubectl

1.5 注册 docker hub镜像仓库

  • 在页面注册后,使用账号密码登录,登录前需要先启动 docker
docker login
  • 如果登录遇到这样的报错:
Post "http://ipc/registry/credstore-updated": dial unix backend.sock: connect: no such file or directory

则修改~/.docker/config.json文件,删除下面这一行,然后重新使用登录命令即可。

"credsStore": "desktop"

2 k8s核心资源概念

2.1 Pod

  • pod是k8s中创建和管理的、最小的可部署的计算单元。
  • 服务运行在容器当中, container (容器) 的本质是进程,而 pod 是管理这一组进程的资源。一个 pod可以管理多个 container。
    在这里插入图片描述
  • 创建一个 pod的示例配置文件
# nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx-container
      image: nginx
  • 通过 kubectl相关命令创建
kubectl apply -f nginx.yaml
kubectl get pods
kubectl port-forward nginx-pod 4000:80
kubectl exec -it nginx-pod /bin/bash
kubectl describe pod nginx-pod

2.2 Deployment

  • Deployment是 k8s中帮助我们管理 pod的资源,比如自动扩容和升级版本。
  • 创建一个 Deployment的示例配置文件。template 标签下的内容是用来定义 pod 资源的,我们需要加上 metadata.labels 来和上面的 selector.matchLabels 对应起来。来表明 pod 是被 deployment 管理,不用在template 里面加上 metadata.name 是因为 deployment 会主动为我们创建 pod 的唯一name
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hellok8s-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hellok8s
  template:
    metadata:
      labels:
        app: hellok8s
    spec:
      containers:
        - image: xxxx/hellok8s:v1
          name: hellok8s-container
  • 当手动删除一个 pod资源后,deployment 会自动创建一个新的 pod。
    在这里插入图片描述
  • 回滚操作
kubectl rollout undo deployment hellok8s-deployment
kubectl rollout history deployment hellok8s-deployment
kubectl rollout undo deployment/hellok8s-deployment --to-revision=2

2.3 Service

  • Service 为 pod 提供一个稳定的 Endpoint。Service 位于 pod 的前面,负责接收请求并将它们传递给它后面的所有pod。一旦服务中的 Pod 集合发生更改,Endpoints 就会被更新,请求的重定向自然也会导向最新的 pod。
  • 创建一个 Deployment的示例配置文件。
# service-hellok8s-clusterip.yaml
apiVersion: v1
kind: Service
metadata:
  name: service-hellok8s-clusterip
spec:
  type: ClusterIP
  selector:
    app: hellok8s
  ports:
  - port: 3000
    targetPort: 3000
  • 在集群中,可以通过访问 service 的 IP 来访问下面的 pods
kubectl get service

在这里插入图片描述

  • 在集群外部访问 pod的 IP
apiVersion: v1
kind: Service
metadata:
  name: service-hellok8s-nodeport
spec:
  type: NodePort
  selector:
    app: hellok8s
  ports:
  - port: 3000
    nodePort: 30000
  • 如果 minikube使用的参数是--driver=docker,需要使用以下命令。
minikube service service-hellok8s-nodeport --url

2.4 Ingress

  • Ingress 可以“简单理解”为服务的网关 Gateway,它是所有流量的入口,经过配置的路由规则,将流量重定向到后端的服务。
  • minikube开启 Ingress-Controller功能
minikube addons enable ingress
kubectl delete deployment,service --all

在这里插入图片描述

参考资料

  • 【1】 https://k8s-tutorials.pages.dev/

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

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

相关文章

Day53力扣打卡

打卡记录 重新规划路线(dfs) 链接 class Solution:def dfs(self, x: int, parent: int, e: List[List[List[int]]]) -> int:res 0for edge in e[x]:if edge[0] parent:continueres edge[1] self.dfs(edge[0], x, e)return resdef minReorder(se…

Android 11.0 MTK Camera2 设置默认拍照尺寸功能实现

1.前言 在11.0的系统rom定制化开发中,在mtk平台的camera2关于拍照的一些功能修改中,在一些平台默认需要设置最大的分辨率 来作为拍照的分辨率,所以就需要了解拍照尺寸设置流程,然后来实现相关的功能 如图: 2.MTK Camera2 设置默认拍照尺寸功能实现的核心类 \vendor\me…

Terraform实战(二)-terraform创建阿里云资源

1 初始化环境 1.1 创建初始文件夹 $ cd /data $ mkdir terraform $ mkdir aliyun terraform作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。 1.2 配置provider 创建providers.tf文件,配置provider依赖。 provider…

AUTOSAR 入门

前言 AUTOSAR是什么Vector DaVinci 工具功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…

nodejs微信小程序+python+PHP的智能停车系统-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

Leetcode刷题笔记题解(C++):165. 比较版本号

思路:利用小数点来分开求和,判断和是否相等来推断两个版本号是否一致 class Solution { public:int compareVersion(string version1, string version2) {int i0;//记录version1的字符下标int j0;//记录version2的字符下标int num10;//保存version1的和…

【Android】查看keystore的公钥和私钥

前言: 查看前准备好.keystore文件,安装并配置openssl、keytool。文件路径中不要有中文。 一、查看keystore的公钥: 1.从keystore中获取MD5证书 keytool -list -v -keystore gamekeyold.keystore 2.导出公钥文件 keytool -export -alias …

在线学习平台-班级模块

在线学习平台-项目搭建 在线学习平台-需求分析 若依的基本使用 通过分析可知,班级模块的结构会比较简单,可以先从班级模块入手 1.先在domain里写上班级里的属性 快捷方式: 时区可以这里找,时区和数据库名之间要加一个 ? 右键需要的数据库模型,便可直接生成 生成的实体类不…

智能优化算法应用:基于蛇优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蛇优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蛇优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蛇优化算法4.实验参数设定5.算法结果6.参考文献7.…

服务器配置免密SSH

在当今互联网时代,远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室,安全始终是首要考虑的因素。这就是为什么 SSH(Secure Shell)成为了网络专业人士的首选工具…

Python---类的综合案例

1、需求分析 设计一个Game类 属性: 定义一个类属性top_score记录游戏的历史最高分 定义一个实例属性player_name记录当前游戏的玩家姓名 方法: 静态方法show_help显示游戏帮助信息 类方法show_top_score显示历史最高分 实例方法start_game开始当前…

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG 2023/12/7 23:50 SDK:rk356x_android12_220722.tgz 只修改DTS的DTC部分就【直接】可以跑NanoPC-T4 参考资料: http://www.friendlyelec.com.cn/agent.asp http://www.friendlyelec.com.c…

JS的变量提升ES6基础

JS的变量提升&ES6基础 变量var关键字var声明作用域实例一实例二多个变量 变量提升 let关键字暂时性死区全局声明for循环中使用let const关键字 变量 ECMAScript变量时松散类型的,意思是变量可以用于保存任何类型的数据。 声明变量:var 、const、let …

NumPy学习:NumPy(Numerical Python)基础(一)

1.什么是NumPy NumPy 是 Python 中用于科学计算的基础包。 它是一个 Python 库,提供多维数组对象, 各种派生对象(例如掩码数组和矩阵),以及 用于对阵列进行快速操作的各种例程,包括 数学、逻辑、形状操作、…

AI助力智慧农业,基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义,在前面的系列博文中,我们从一些现实世界里面的所见所想所感进行了很多对应的实践,感兴趣的话可以自行移步阅读即可: 《自建数据集,基于YOLOv7开发构建农田场景下杂草…

视觉资料记录

1. 江南才尽,年少无知!_RK3399移植,(02)Cartographer源码无死角解析-免费,(01)ORB-SLAM2源码无死角解析-免费-CSDN博客江南才尽,年少无知!擅长RK3399移植,(02)Cartographer源码无死角解析-免费,(01)ORB-SLAM2源码无死角解析-免费,…

HCIP考试实验

实验更新中,部分配置解析与分析正在完善中........... 实验拓扑图 实验要求 要求 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3…

java之“输入与输出”程序详解

java之“输入与输出”程序详解 一、eclipse操作示例1、完整代码2、运行效果3、代码与运行结果关系图 一、eclipse操作示例 1、完整代码 import java.util.Scanner;public class inputOutput {/*** param args 输入与输出*/public static void main(String[] args) {// 输出Sy…

Rsync+Sersync

服务器相关参数 源服务器 192.168.17.101 目标服务器(同步到的服务器) 192.168.17.103 ##目标服务器配置 ###1、配置rsync服务 1、安装rsync yum -y install rsync 2、配置rsync vim /etc/rsyncd.conf 配置文件内容 uid root gid root use c…

【数据结构】C语言结构体详解

目录 前言 一、结构体的定义 二、定义结构体变量 三、结构体变量的初始化 四、使用typedef声明新数据类型名 五、指向结构体变量的指针 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 &#x1f4a1…