kubenetes学习3--Namespace命名空间

本文介绍了Kubernetes中的命名空间(Namespace)概念,包括其作用、如何创建及在Pod、RC和服务中指定使用。通过Namespace,可以实现对不同项目、小组或用户组的逻辑分组,并进行资源配额设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Namespace(命名空间)是kubernetes系统中的另一个重要的概念,通过将系统内部的对象“分配”到不同的Namespace中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。

   Kubernetes集群在启动后,会创建一个名为“default”的Namespace,如果不特别指明Namespace,则用户创建的Pod、RC、Service都被系统创建到“default”的Namespace中。


1.查询

[root@localhost k8s]# kubectl get namespaces
NAME      STATUS    AGE
default   Active    6d

2.创建

   直接创建Namespace。

apiVersion: v1
kind: Namespace
metadata:
   name: development
   labels:
     name: development
[root@localhost k8s]# kubectl get namespace 
NAME          STATUS    AGE
default       Active    6d
development   Active    6s

3.Pod/RC/Service中指定Namespace

   创建Pod/RC/Service时,如果不指定Namespace,则默认是"default"的Namespace。

   比如[root@localhost k8s]# kubectl get pod php-controller-2bvdq -o yaml查看一个通过RC创建的Pod



php-pod.yaml

apiVersion: v1
kind: Pod
metadata:
   name: php-test
   labels: 
     name: php-test
   namespace: development
spec:
  containers:
  - name: php-test
    image: 192.168.174.131:5000/php-base:1.0
    env:
    - name: ENV_TEST_1
      value: env_test_1
    - name: ENV_TEST_2
      value: env_test_2
    ports:
    - containerPort: 80
      hostPort: 80 

 
[root@localhost k8s]# kubectl create -f php-pod.yaml 
pod "php-test" created
[root@localhost k8s]# kubectl get pods
[root@localhost k8s]# kubectl get pods --namespace=development
NAME       READY     STATUS    RESTARTS   AGE
php-test   1/1       Running   0          1m
[root@localhost k8s]# 

kubectl get pods时,没有任何结果,因为默认的是查询namespace=default的,所以要加上namespace参数。同理创建RC/Service也是一样的。


  通过使用Namespace来组织k8s的各种对象,可以实现对用户的分组,即“多租户”管理。对不同的租户还可以进行单独的资源配额设置和管理,使得整个集群的资源配置非常灵活、方便。关于租户配额后期学习。

### Kubernetes Maven Plugin 使用指南 Kubernetes Maven Plugin 是用于简化 Kubernetes 资源管理和部署的工具。它允许开发者通过 Maven 构建流程来管理 Kubernetes 清单文件并执行相关操作。 以下是关于 **kubernetes-maven-plugin** 的使用指南、配置方法以及常见问题解决方案: --- #### 1. 添加 kubernetes-maven-plugin 到项目中 要在 Maven 项目中集成 `kubernetes-maven-plugin`,需要将其作为插件添加到项目的 `pom.xml` 文件中。以下是一个典型的配置示例: ```xml <build> <plugins> <!-- Kubernetes Maven Plugin --> <plugin> <groupId>io.fabric8</groupId> <artifactId>kubernetes-maven-plugin</artifactId> <version>4.13.2</version> <configuration> <kubeConfig>${user.home}/.kube/config</kubeConfig> <namespace>default</namespace> </configuration> </plugin> </plugins> </build> ``` 此配置指定了使用的版本号为 `4.13.2` 并设置了默认命名空间为 `default`[^5]。 --- #### 2. 配置 Kubernetes 清单文件 为了使该插件能够正常工作,通常需要提供一个或多个 YAML 或 JSON 格式的 Kubernetes 清单文件。这些清单可以存储在项目的特定目录下(例如 `src/main/kubernetes`)。下面是一个简单的 Deployment 和 Service 定义示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 2 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: nginx:latest --- apiVersion: v1 kind: Service metadata: name: my-service spec: type: ClusterIP ports: - port: 80 targetPort: 80 selector: app: my-app ``` 确保清单路径被正确指定给插件配置中的 `<resourceDir>` 属性[^6]。 --- #### 3. 执行常用命令 `kubernetes-maven-plugin` 提供了许多目标(goals),可用于不同的场景。常见的目标及其用途如下表所示: | 目标名称 | 功能描述 | |-------------------|------------------------------------------------------------------------| | `apply` | 应用当前资源定义至 Kubernetes 集群 | | `delete` | 删除已存在的资源 | | `create` | 创建新的资源 | | `rolling-update` | 对现有 Deployment 进行滚动更新 | 例如,在终端运行以下命令可应用资源配置: ```bash mvn kubernetes:apply ``` 如果要删除所有关联资源,则可以运行: ```bash mvn kubernetes:delete ``` --- #### 4. 常见问题及解决办法 ##### (1) **无法连接到 Kubernetes API** 错误表现:当尝试调用任何目标时收到类似于 “Unable to connect to the server” 的消息。 原因分析:可能是由于未设置有效的 kubeconfig 文件或者网络不通所致。 解决措施:确认 `${user.home}/.kube/config` 是否存在且指向正确的集群地址;另外还需验证本地机器是否有权限访问远程服务器[^7]。 ##### (2) **找不到指定镜像** 错误提示:“ImagePullBackOff”,表示 Pod 尝试拉取容器镜像失败。 可能的原因包括私有仓库认证缺失或是标签名拼写错误等。 修复建议:对于私有库情况,请先登录成功后再重新触发任务; ```bash docker login your-private-repo.com ``` 之后再推送新镜像即可[^8]。 --- ### 示例代码片段 这里给出一段完整的 POM 设置加上基本的操作脚本组合起来的例子以便于理解整个过程如何运作: ```xml <plugin> <groupId>io.fabric8</groupId> <artifactId>kubernetes-maven-plugin</artifactId> <version>4.13.2</version> <executions> <execution> <phase>install</phase> <goals> <goal>apply</goal> </goals> </execution> </executions> <configuration> <resourceDir>src/main/kubernetes</resourceDir> <skip>false</skip> </configuration> </plugin> ``` 配合 Docker 插件一起使用时会更加高效方便,比如前面提到过的 Spotify 提供的那个版本控制良好稳定可靠[^9]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值