今天继续学习Kubernetes内容namespace资源对象和pod简介

K8S-namespace资源对象


一、概述

Kubernetes 支持多个虚拟集群 ,它们底层依赖于同一个物理集群 。 这些虚拟集群被称为命名空间

命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、production、deployment环境分别创建各自的命名空间。

namespace应用场景

命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。

二、namespace资源管理

查看名称空间

bash 复制代码
kubectl get namespace(ns)

查看特定的名称空间的详细信息

bash 复制代码
kubectl describe ns NAME

创建名称空间

bash 复制代码
kubectl create namespace 名称

三、namespace使用案例

创建一个test命名空间

bash 复制代码
[root@k8s-master01 ~]# kubectl create ns test

切换默认查看命名空间

bash 复制代码
[root@k8s-master01 ~]# kubectl  config set-context --current --namespace=kube-system

查看哪些资源属于命名空间级别的

bash 复制代码
[root@k8s-master01 ~]# kubectl api-resources --namespaced=true

对ns做资源配额

bash 复制代码
[root@k8s-master01 ~]# vim namespace-quota.yaml
bash 复制代码
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-quota
  namespace: test
spec:
  hard:
    requests.cpu: '2'
    requests.memory: 2Gi
    limits.cpu: '4'
    limits.memory: 4Gi
bash 复制代码
[root@k8s-master01 ~]# kubectl  apply -f namespace-quota.yaml
[root@k8s-master01 ~]# kubectl describe ns test
Name:         test
Resource Quotas
 Name:            mem-cpu-quota
 Resource         Used  Hard
 --------         ---   ---
 limits.cpu       0     4
 limits.memory    0     4Gi
 requests.cpu     0     2
 requests.memory  0     2Gi

创建资源限制pod

bash 复制代码
[root@k8s-master01 ~]# vim pod-test.yaml
bash 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  namespace: myns1
  labels:
    app: nginx129
spec:
  containers:
  - name: nginx129
    ports:
    - containerPort: 80
    image: nginx:latest
    imagePullPolicy: IfNotPresent

发现无法正常启动

bash 复制代码
[root@k8s-master01 ~]# kubectl apply -f pod-test.yaml
Error from server (Forbidden): error when creating "pod-test.yaml": pods "pod-test" is forbidden: failed quota: mem-cpu-quota: must specify limits.cpu for: nginx1; limits.memory for: nginx1; requests.cpu for: nginx1; requests.memory for: nginx1

修改资源配额清单

bash 复制代码
[root@k8s-master01 ~]# vim pod-test.yaml
bash 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  namespace: test
  labels:
    app: tomcat-pod-test
spec:
  containers:
  - name:  tomcat-test
    ports:
    - containerPort: 8080
    image: tomcat:8.5-jre8-alpine
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 0.5
        memory: 1024Mi
      limits:
        cpu: 0.5
        memory: 1024Mi

再次执行就正常运行了

bash 复制代码
[root@k8s-master01 ~]# kubectl apply -f pod-test.yaml
bash 复制代码
[root@k8s-master01 ~]# kubectl get pod -n test
NAME       READY   STATUS    RESTARTS   AGE
pod-test   1/1     Running   0          15s

K8S-Pod资源对象


一、概述

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元

Pod (就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的容器总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的 "逻辑主机",其中包含一个或多个应用容器, 这些容器相对紧密地耦合在一起。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。

除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群支持临时性容器的情况下, 为调试的目的注入临时性容器。

Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。

Pod 类似于共享名字空间并共享文件系统卷的一组容器。

二、POD创建过程(重点,必背)

第一步: 客户端提交创建Pod的请求,可以通过调用API Server的Rest API接口,也可以通过kubectl命令行工具。如kubectl apply -f filename.yaml(资源清单文件)

第二步: apiserver接收到pod创建请求后,会将yaml中的属性信息(metadata)写入etcd。

第三步: apiserver触发watch机制准备创建pod,信息转发给调度器scheduler,调度器用一组规则过滤掉不符合要求的主机,比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉。调度器使用调度算法选择node,调度器将node信息给apiserver,apiserver将绑定的node信息写入etcd

第四步: apiserver又通过watch机制,调用kubelet,指定pod信息,调用Docker API创建并启动pod内的容器。

第五步: worker创建完成之后反馈给自身的kubelet, 再反馈给控制器的apiserver,apiserver又将pod的状态信息写入etcd

相关推荐
好好学习啊天天向上20 小时前
C盘容量不够,python , pip,安装包的位置
linux·python·pip
li_wen0120 小时前
文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
大数据·linux·数据库·文件系统·jffs2
wypywyp20 小时前
2.虚拟机一直显示黑屏,无法打开,可能是分配的硬盘空间不够
linux·运维·服务器
zilikew20 小时前
Flutter框架跨平台鸿蒙开发——桌面宠物APP的开发流程
学习·flutter·harmonyos·鸿蒙·宠物
SongYuLong的博客21 小时前
TL-WR710N-V2.1 硬改刷机OpenWRT源码编译固件
linux·物联网·网络协议
AlfredZhao21 小时前
Docker 快速入门:手把手教你打包 Python 应用
linux·docker·podman
HIT_Weston1 天前
107、【Ubuntu】【Hugo】搭建私人博客:模糊搜索 Fuse.js(三)
linux·javascript·ubuntu
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
Haproxy会话保持:基于Cookie优化
运维·负载均衡
艾莉丝努力练剑1 天前
【优选算法必刷100题】第007~008题(双指针算法):三数之和、四数之和问题求解
linux·算法·双指针·优选算法
Sarvartha1 天前
LangChain 入门核心知识学习笔记
笔记·学习·langchain