当前位置: 首页 > news >正文

【k8s实践】 创建第一个Pod(Nginx)

环境

  • Rocky Linux9.4 x86_64 VM
  • 安装了Microk8s (参考:Microk8s安装方法)

说明: 其他k8s(例如: k3s, kubernetes)创建Pod的方法和Microk8s没啥区别,可以参考本文

目标

创建一个Nginx的Pod,映射宿主机30000端口到Pod容器的80端口;客户端能通过宿主机30000端口访问Pod容器中的Nginx服务

步骤

从国内源下载nginx:1.27.3镜像, 再导入镜像

Microk8s执行如下命令:

microk8s.ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3
microk8s.ctr images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3 docker.io/library/nginx:1.27.3

如果是Kubernetes环境,执行如下命令: (和Microk8s大同小异)

ctr -n k8s.io images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3
ctr -n k8s.io images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3 docker.io/library/nginx:1.27.3

创建nginx的namespace

创建一个新的namespace,名称为nginx,后续在这个namespace下创建Pod

kubectl create ns nginx

创建并应用deployment

创建nginx-deployment.yaml文件,内容如下:

apiVersion: apps/v1
kind: Deployment #指定资源类型
metadata:name: nginx-deployment #指定deployment名称namespace: nginx #指定pod运行的namespace
spec:selector:matchLabels:app: nginxreplicas: 1 # 指定副本数(nginx pod个数)template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.27.3 #(指定镜像)imagePullPolicy: IfNotPresent #(指定镜像拉取策略, IfNotPresent表示如果本地有就取本地镜像,否则从网络拉取镜像ports:- containerPort: 80 # 容器内暴露的端口

这个yaml文件参考了官方文档: https://kubernetes.io/zh-cn/docs/tasks/run-application/run-stateless-application-deployment/
再应用这个deployment

kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created

deployment创建成功后,查看Nginx pod状态如下:

kubectl -n nginx get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c7dff4cf7-gbtsr   1/1     Running   0          2m55s

查看当前Nginx deployment的内容

kubectl -n nginx get deploy nginx-deployment -o yaml

创建并应用service, 将宿主机端口(例如30000端口)映射到Pod的80端口

创建nginx-service.yaml文件,主要字段的说明参考注释,文件内容如下:

apiVersion: v1
kind: Service #指定资源类型
metadata:name: nginx-service #指定service的名称namespace: nginx #指定pod运行的namespace
spec:selector:app: nginxtype: NodePortports:- protocol: TCPtargetPort: 80 # Pod容器中的端口,是Nginx程序实际监听的端口port: 80 # 暴露在cluster IP上的端口,提供集群内部访问service的入口, 即clusterIP:portnodePort: 30000 # 指定宿主机的端口, nodePort提供集群外部访问Service的能力

面试题: 说说看Service中port, targetPort, nodePort的作用,有什么区别?

  • port: 暴露在cluster IP上的端口,提供集群内部访问service的入口,即clusterIP:port
  • nodePort: 宿主机端口, 提供集群外部访问Service的能力
  • targetPort: Pod内部端口,是实际应用程序监听的端口

再应用这个service

kubectl apply -f nginx-service.yaml
service/nginx-service created

执行成功后,查看service

kubectl -n nginx get svc
NAME            TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.152.183.248   <none>        80:30000/TCP   2m32s

可以看出NodePort端口是30000,clusterIp:port为10.152.183.248:80

测试

通过NodePort方式可以访问Nginx

curl localhost:30000
...
<title>Welcome to nginx!</title>
...

通过clusterIp:port方式也可以访问Nginx

curl 10.152.183.248:80
...
<title>Welcome to nginx!</title>
...

删除Nginx Pod

删除之前创建的deployment和service资源即可,方法如下:

kubectl -n nginx delete deploy nginx-deployment
kubectl -n nginx delete svc nginx-service

参考

https://kubernetes.io/zh-cn/docs/tasks/run-application/run-stateless-application-deployment/

相关文章:

【k8s实践】 创建第一个Pod(Nginx)

环境 Rocky Linux9.4 x86_64 VM安装了Microk8s (参考:Microk8s安装方法) 说明: 其他k8s(例如: k3s, kubernetes)创建Pod的方法和Microk8s没啥区别&#xff0c;可以参考本文 目标 创建一个Nginx的Pod&#xff0c;映射宿主机30000端口到Pod容器的80端口&#xff1b;客户端能通…...

盘古大模型实战

0 前言 前一段时间&#xff0c;在学习人工智能的同时&#xff0c;也去了解了一下几乎是作为人工智能在气象上应用的一大里程碑式的研究成果-华为盘古气象大模型。正是盘古大模型的出现&#xff0c;促使天气预报的未来发展方向多了个除天气学方法、统计学方法、数值预报方法之外…...

Python subprocess.run 使用注意事项,避免出现list index out of range

在执行iOS UI 自动化专项测试的时候&#xff0c;在运行第一遍的时候遇到了这样的错误&#xff1a; 2024-12-04 20:22:27 ERROR conftest pytest_runtest_makereport 106 Test test_open_stream.py::TestOpenStream::test_xxx_open_stream[iPhoneX-xxx-1-250] failed with err…...

包管理器npm,cnpm,yarn和pnpm

npm (Node Package Manager) 核心技术与工作原理 依赖解析&#xff1a; 广度优先搜索&#xff08;BFS&#xff09;&#xff1a;npm 使用 BFS 算法来解析依赖树&#xff0c;尽量扁平化 node_modules 目录以减少重复的依赖项。冲突处理&#xff1a;如果两个包需要同一个依赖的不…...

树莓派4B使用opencv读取摄像头配置指南

本文自己记录&#xff0c;给我们lab自己使用&#xff0c;其他朋友们不一定完全适配&#xff0c;请酌情参考。 一. 安装opecnv 我们的树莓派4B默认是armv7l架构&#xff0c;安装的miniconda最新的版本 Miniconda3-latest-Linux-armv7l.sh 仍然是python3.4几乎无法使用&#xff…...

Spring Boot 进阶话题:部署

部署是将应用程序从开发环境移动到可以供用户访问的生产环境的过程。Spring Boot提供了多种部署选项&#xff0c;包括打包为可执行jar文件&#xff0c;使用Docker容器化&#xff0c;以及部署到云平台。 打包Spring Boot应用 Spring Boot应用可以打包为包含所有依赖、类和资源…...

Python 3 和 MongoDB 的集成使用

Python 3 和 MongoDB 的集成使用 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;以其灵活的数据模型和强大的查询功能而闻名。Python 3 作为一种广泛使用的编程语言&#xff0c;与 MongoDB 的集成变得日益重要。本文将介绍如何在 Python 3 环境中集成和使用 MongoDB&#xff…...

perl语言中模式匹配的左右关系

这里简单记录一下&#xff0c;在perl语言中&#xff0c;关于模式匹配的一个细节&#xff1a; 在进行模式匹配的时候&#xff0c;左边写需要查找的字符串&#xff0c;右侧写匹配的关键字&#xff0e; 两边的顺序不一样就会导致匹配结果不一样&#xff0e; 测试代码&#xff1a;…...

【漏洞复现】网动统一通信平台(ActiveUC)接口iactiveEnterMeeting存在信息泄露漏洞

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 @TOC 一、漏洞概述 1.1漏洞简介 漏洞名称:网动统一通信平台(ActiveUC)接口iactiveEnterMeeting存在信息泄露漏洞漏洞编号:无漏洞类型:信息泄露漏洞威胁等级:高危影…...

C++ STL 容器系列(三)list —— 编程世界的万能胶,数据结构中的百变精灵

STL系列学习参考&#xff1a; C STL系列__zwy的博客-CSDN博客https://blog.csdn.net/bite_zwy/category_12838593.html 学习C STL的三个境界&#xff0c;会用&#xff0c;明理&#xff0c;能扩展&#xff0c;STL中的所有容器都遵循这个规律&#xff0c;下面我们就按照这三个境…...

Java经典面试题总结(附答案)2025

点击获取PDF版 10、如何将字符串反转&#xff1f; 添加到StringBuilder中&#xff0c;然后调用reverse()。 11、String 类的常用方法都有那些&#xff1f; equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpt…...

Stylus 浏览器扩展开发-Cursor AI辅助

项目起源 作为一个经常需要长时间盯着屏幕的开发者&#xff0c;我一直在寻找一个简单的方法来保护眼睛。最初的想法很简单&#xff1a;将网页背景色替换成护眼的豆沙绿。虽然市面上已经有类似的扩展&#xff0c;但我想要一个更加轻量且可定制的解决方案。 这个简单的需求逐渐…...

DAY35|动态规划Part03|LeetCode:01背包问题 二维、01背包问题 一维、416. 分割等和子集

目录 01背包理论基础&#xff08;一&#xff09; 基本思路 C代码 01背包理论基础&#xff08;二&#xff09; 基本思路 C代码 LeetCode:416. 分割等和子集 基本思路 C代码 01背包理论基础&#xff08;一&#xff09; 题目链接&#xff1a;卡码网46. 携带研究材料 文字…...

创建空向量:std::vector<int> v,刚创建时大小为0

创建一个空的std::vector<int> v会在刚创建时具有大小&#xff08;size&#xff09;为0的特点。这意味着此时向量中没有任何元素&#xff0c;而且其容量&#xff08;capacity&#xff09;也返回0&#xff0c;表明还没有为这个向量分配任何内存空间3。换句话说&#xff0c…...

VBA基础2

VBA基础2 sub过程语法对单元格进行赋值操作连续赋值不连续赋值 cells &#xff08;行&#xff0c;列&#xff09;行引用rows列引用 &#xff08;columns&#xff09;offset位移属性End属性&#xff08;指定返回&#xff09; 使用VBA编辑器需要用AltF11打开 或者VB编辑器打开 可…...

计算机网络-GRE基础实验二

前面我们学习了GRE隧道的建立以及通过静态路由指向的方式使得双方能够网络互联&#xff0c;但是通过静态路由可能比较麻烦&#xff0c;GRE支持组播、单播、广播因此可以在GRE隧道中运行动态路由协议使得网络配置更加灵活。 通过前面的动态路由协议的学习我们知道动态路由协议都…...

JSON 使用

JSON 使用 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但因其文本格式清晰简洁,被广泛用于数据交换和存储。本文将详细介绍JSON的使用方法,包括其语法、数据类型、如…...

Leetcode—1539. 第 k 个缺失的正整数【简单】

2024每日刷题&#xff08;206&#xff09; Leetcode—1539. 第 k 个缺失的正整数 C实现代码 class Solution { public:int findKthPositive(vector<int>& arr, int k) {int missing 1;int cur 1;int n arr.size();int missingCnt 0;int ptr 0;for(; missingCn…...

深入浅出:PHP 控制结构与循环语句

文章目录 引言控制结构条件判断if-else 语句elseif 语句嵌套的 if 语句三元运算符 switch 语句 循环语句for 循环遍历数组使用 range() while 循环基本用法无限循环循环控制语句break 语句continue 语句do-while 循环 综合案例参考资料 引言 PHP 是一种广泛用于服务器端开发的…...

深入解析 Loss 减少方式:mean和sum的区别及其在大语言模型中的应用 (中英双语)

深入解析 Loss 减少方式&#xff1a;mean 和 sum 的区别及其在大语言模型中的应用 在训练大语言模型&#xff08;Large Language Models, LLM&#xff09;时&#xff0c;损失函数&#xff08;Loss Function&#xff09;的处理方式对模型的性能和优化过程有显著影响。本文以 re…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...