k8s概念入门及简单创建pod,运行pod
k8s初入门
开始学习k8s,可能会被其很多概念搞懵,什么Master,Node,Pod,Service,Namespace。然后就是yaml文件,感觉也是很友好。
使用k8s,一定要熟悉其概念,可以看文末的连接。然后在实际操作中,我们用的最多的工具就是kubectl
kubectl get pods
kubectl create ...
kubectl get namespace
其实我们可以将这些概念看成一种资源对象,是k8s提供给我们的抽象资源。那么我们可以将k8s看成一个对象管理系统,比如数据库系统。事实上,k8s使用etcd数据库,我们的修改都记录在这里。
同时资源对象之间可能会存在一定的关系,就类似关系型数据库中对象之间的关系。
k8s搭建一个简单的pod
k8s集群搭建好后,各个node的状态变成了ready,就可以创建pod,创建完成后,就会默认的运行其中的container。
使用一个简单yaml文件描述pod:
apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 .
kind: Pod #必选,Pod
metadata: #必选,元数据
name: string #必选,Pod名称
namespace: string #必选,Pod所属的命名空间,默认为"default"
labels: #自定义标签
- name: string #自定义标签名字
annotations: #自定义注释列表
- name: string
spec: #必选,Pod中容器的详细定义
containers: #必选,Pod中容器列表
- name: string #必选,容器名称,需符合RFC 1035规范
image: string
运行kubectl create -f demo.yaml,就完成了创建pod
但是使用kubectl get pods,发现其转态不是completed,使用kubectl describe pod demo,报错:
FailedCreatedPodSandBox k8s.gcr.io/pause:3.1
查阅资料,发现k8s中的镜像都依赖于这个基础镜像。现在有两个办法,外网下载镜像或者更改k8s的远程仓库地址,还是手动下载最方便,参考文章k8s.gcr.io镜像无法下载的问题.这其中要求对docker操作比较熟悉,比如docker save,docker load
这样pod的状态就为complete了。
参考博客:
yaml格式的pod定义文件完整内容
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义