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

四、k8s快速入门之Kubernetes资源清单

kubernetes中的资源

⭐️ k8s中所有的内容都抽象为资源,资源实列化之后,叫做对象

1️⃣名称空间级别

⭐️ kubeadm在执行k8spod的时候会在kube-system这个名称空间下执行,所以说当你kubectl get pod 的时候是查看不到的查看的是默认的pod

  • 工作负载型资源( workload ):PodReplicaSetDeploymentStatefulSetDaemonSet、 Job、CronJob ( ReplicationControllerv1.11 版本被废弃)
  • 服务发现及负载均衡型资源( ServiceDi scovery LoadBalance ): ServiceIngress、 …
  • 配置与存储型资源: Volume( 存储卷)、CSI( 容器存储接口,可以扩展各种各样的第三方存储卷)
  • 特殊类型的存储卷: ConfigMap( 当配置中心来使用的资源类型)、Secret (保存敏感数据)、
  • DownwardAPI (把外部环境中的信息输出给容器)
2️⃣ 集群级别

⭐️ 不管在那个名称空间都可见

Namespace(命名空间)、 NodeRoleClusterRoleRoleBindingClusterRoleBinding

3️⃣ 元数据级

HPAPodTemplateLimitRange

kubernetes资源清单

⭐️在k8s中使用YAML文件格式来创建符合期望的pod,这样的yaml文件叫做资源清单

1️⃣ K8s中yaml常用字段

⭐️必填段

image-20240430003341832

⭐️主要段

image-20240430003407185

image-20240430003418273

image-20240430003427912

⭐️ 额外段

image-20240430003441722

3️⃣ 实际操作命令

⭐️ 获取api列表

[root@master ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

获取版本信息(查看详细信息)

kubect explain -h

字段格式

apiversion <string>并表示子符串类型
metadata <bject>#表示需要嵌套多层字段
labels <map[string]string>#表示由k:v组成的映射
finalizers <[]string>#表示字串列表
ownerReferences < []0bject>#表示对象列表
hostPID <boolean>#布尔类型
priority <integer>#整型
name <string> -required-#如果类型后面接-required-, 表示为必填字段

image-20240430003604304

⭐️ 编写一个简单的pod文件模板

mkdir pod
vim pod/pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: website
  namespace: default ##这里不填也可以默认就是这个命名空间
  labels: ##定义标签
    app: web
    vsersion: v1
spec:
  containers:
  - name: web1
    image: nginx
 - name: web2
   image: nginx

创建pod

kubectl create -f pod/pod.yaml

查看pod

[root@master ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6b48575596-bsdt2   1/1     Running   1          24h
nginx-6b48575596-fbdjf   1/1     Running   1          24h
nginx-6b48575596-wzmdp   1/1     Running   1          24h
website                  1/2     Error     0          18s

⚠️ 可以看见是没起来的,为什么没起来呢?我们查看一下pod日志

kubectl describe pod website
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  5m27s                  default-scheduler  Successfully assigned default/website to node1
  Normal   Pulling    5m27s                  kubelet, node1     Pulling image "nginx"
  Normal   Pulled     5m21s                  kubelet, node1     Successfully pulled image "nginx"
  Normal   Created    5m21s                  kubelet, node1     Created container web1
  Normal   Started    5m21s                  kubelet, node1     Started container web1
  Normal   Pulling    4m17s (x4 over 5m21s)  kubelet, node1     Pulling image "nginx"
  Normal   Pulled     4m12s (x4 over 5m15s)  kubelet, node1     Successfully pulled image "nginx"
  Normal   Created    4m12s (x4 over 5m15s)  kubelet, node1     Created container web2
  Normal   Started    4m12s (x4 over 5m14s)  kubelet, node1     Started container web2
  Warning  BackOff    19s (x20 over 5m3s)    kubelet, node1     Back-off restarting failed container
##可以看见web2一直退出
[root@master ~]# kubectl log website web2
log is DEPRECATED and will be removed in a future version. Use logs instead.
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/08/17 07:48:28 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/08/17 07:48:28 [emerg] 1#1: bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
2021/08/17 07:48:28 [notice] 1#1: try again to bind() after 500ms
2021/08/17 07:48:28 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/08/17 07:48:28 [emerg] 1#1: bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
2021/08/17 07:48:28 [notice] 1#1: try again to bind() after 500ms
2021/08/17 07:48:28 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/08/17 07:48:28 [emerg] 1#1: bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
2021/08/17 07:48:28 [notice] 1#1: try again to bind() after 500ms
2021/08/17 07:48:28 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/08/17 07:48:28 [emerg] 1#1: bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
2021/08/17 07:48:28 [notice] 1#1: try again to bind() after 500ms
2021/08/17 07:48:28 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/08/17 07:48:28 [emerg] 1#1: bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
2021/08/17 07:48:28 [notice] 1#1: try again to bind() after 500ms
2021/08/17 07:48:28 [emerg] 1#1: still could not bind()
这里一直显示80被占用

这里我画了个图

image-20240430003759571

我们更改pod.yaml文件在删除web2和镜像就好了

vim pod/pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: website
  labels:
    app: web
    vsersion: v1
spec:
  containers:
  - name: web1
    image: nginx

在创建一个pod

[root@master ~]# kubectl create -f pod/pod.yaml 
pod/website created
[root@master ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6b48575596-bsdt2   1/1     Running   1          24h
nginx-6b48575596-fbdjf   1/1     Running   1          24h
nginx-6b48575596-wzmdp   1/1     Running   1          24h
website                  1/1     Running   0          10s

未经允许禁止转载


http://www.kler.cn/a/373930.html

相关文章:

  • 2.WebSocket进阶: 深入探究实时通信的最佳实践与优化技巧
  • c语言水仙花,超简单讲解
  • SchooWeb2--基于课堂学习到的知识点2
  • Kubernetes中的网络模型:Service、Ingress、Pod通信详解
  • Pinctrl子系统pinctrl_desc结构体进一步介绍
  • Python小游戏17——飞机大战
  • 忘记无线网络密码的几种解决办法
  • 【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)
  • vue中el-table显示文本过长提示
  • 函数的调用
  • vue2和vue3的数据双向绑定差异整理
  • PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用
  • 【java batik_使用BATIK解析SVG生成PNG图片】
  • 数字普惠金融-工具变量(2024.2更新)
  • ubuntu 给终端设置代理
  • web文件包含include
  • 变压器漏感对整流电路的影响【电力电子技术3章】
  • 【jvm】空间分配担保策略
  • Rust 力扣 - 643. 子数组最大平均数 I
  • kafka中MirrorMaker1和MirrorMaker2的区别
  • 易保全创新“诉前调解+赋强公证”,提供便捷高效的纠纷解决途径
  • 关于springboot跨域与拦截器的问题
  • 在面试了些外包以后,我有了些自己的思考
  • LySocket 远程ShellCode注入工具
  • 20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案
  • 解决注册Kaggle出现的“Captcha must be filled out”问题