kubernetes学习-pod资源

一、kubernetes及pod介绍

Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。它最初由 Google 设计,现由云原生计算基金会(CNCF)维护。

### 主要功能
1. **自动化部署与扩展**:Kubernetes 能根据资源需求自动部署和扩展应用。
2. **负载均衡**:自动分配网络流量,确保应用稳定运行。
3. **自我修复**:自动重启或替换故障容器,保持应用高可用。
4. **存储编排**:支持多种存储系统,自动挂载所需存储。
5. **配置与密钥管理**:集中管理配置和敏感信息,确保安全。
6. **批处理执行**:支持一次性任务和定时任务。

### 核心概念
1. **Pod**:最小的部署单元,包含一个或多个容器。
2. **Service**:定义如何访问一组 Pod,提供稳定的网络端点。
3. **Deployment**:管理 Pod 的部署和更新。
4. **Node**:运行容器的工作节点。
5. **Namespace**:用于资源隔离,支持多团队共享集群。

### 应用场景
1. **微服务架构**:适合管理复杂的微服务应用。
2. **持续集成与持续部署(CI/CD)**:与 CI/CD 工具集成,实现自动化发布。
3. **混合云与多云环境**:支持跨云平台的应用部署。
4. **大规模应用管理**:高效管理大规模容器化应用。

### 优势
1. **可移植性**:支持跨平台部署,避免供应商锁定。
2. **扩展性**:轻松扩展应用规模。
3. **社区支持**:拥有活跃的社区和丰富的生态系统。

Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。它最初由 Google 设计,现由云原生计算基金会(CNCF)维护。

### 主要功能
1. **自动化部署与扩展**:Kubernetes 能根据资源需求自动部署和扩展应用。
2. **负载均衡**:自动分配网络流量,确保应用稳定运行。
3. **自我修复**:自动重启或替换故障容器,保持应用高可用。
4. **存储编排**:支持多种存储系统,自动挂载所需存储。
5. **配置与密钥管理**:集中管理配置和敏感信息,确保安全。
6. **批处理执行**:支持一次性任务和定时任务。

### 核心概念
1. **Pod**:最小的部署单元,包含一个或多个容器。
2. **Service**:定义如何访问一组 Pod,提供稳定的网络端点。
3. **Deployment**:管理 Pod 的部署和更新。
4. **Node**:运行容器的工作节点。
5. **Namespace**:用于资源隔离,支持多团队共享集群。

### 应用场景
1. **微服务架构**:适合管理复杂的微服务应用。
2. **持续集成与持续部署(CI/CD)**:与 CI/CD 工具集成,实现自动化发布。
3. **混合云与多云环境**:支持跨云平台的应用部署。
4. **大规模应用管理**:高效管理大规模容器化应用。

### 优势
1. **可移植性**:支持跨平台部署,避免供应商锁定。
2. **扩展性**:轻松扩展应用规模。
3. **社区支持**:拥有活跃的社区和丰富的生态系统。

### 总结
Kubernetes 是容器化应用管理的强大工具,适用于多种场景,能够显著提升开发和运维效率。

二、实战运维

[root@master ~]# kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
tomcat-test   1/1     Running   0          98s
[root@master ~]# cd pod/
[root@master pod]# cat pod-tomcat.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tomcat-test
  namespace: default
  labels:
    app:  tomcat
spec:
  containers:
  - name:  tomcat-java
    ports:
    - containerPort: 8080
    image: xianchao/tomcat-8.5-jre8:v1
    imagePullPolicy: IfNotPresent

[root@master pod]# kubectl get pod -l app=tomcat
NAME          READY   STATUS    RESTARTS   AGE
tomcat-test   1/1     Running   0          3m6s
[root@master pod]# kubectl delete pod tomcat-test
pod "tomcat-test" deleted

以下是对这些命令的详细解释:

### 1. `kubectl get pods`
```bash
[root@master ~]# kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
tomcat-test   1/1     Running   0          98s
```
- **作用**:列出当前命名空间中的所有 Pod。
- **输出**:
  - `NAME`:Pod 名称,这里是 `tomcat-test`。
  - `READY`:Pod 中容器的就绪状态,`1/1` 表示 1 个容器已就绪。
  - `STATUS`:Pod 的当前状态,`Running` 表示正在运行。
  - `RESTARTS`:容器重启次数,`0` 表示未重启。
  - `AGE`:Pod 的运行时间,`98s` 表示已运行 98 秒。

### 2. `cd pod/`
```bash
[root@master ~]# cd pod/
```
- **作用**:切换到 `pod` 目录,通常用于存放 Kubernetes 资源定义文件。

### 3. `cat pod-tomcat.yaml`
```bash
[root@master pod]# cat pod-tomcat.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tomcat-test
  namespace: default
  labels:
    app:  tomcat
spec:
  containers:
  - name:  tomcat-java
    ports:
    - containerPort: 8080
    image: xianchao/tomcat-8.5-jre8:v1
    imagePullPolicy: IfNotPresent
```
- **作用**:显示 `pod-tomcat.yaml` 文件内容。
- **内容**:
  - `apiVersion: v1`:Kubernetes API 版本。
  - `kind: Pod`:资源类型为 Pod。
  - `metadata`:Pod 的元数据,包括名称、命名空间和标签。
  - `spec`:Pod 的规格,定义了容器名称、端口、镜像等。

### 4. `kubectl get pod -l app=tomcat`
```bash
[root@master pod]# kubectl get pod -l app=tomcat
NAME          READY   STATUS    RESTARTS   AGE
tomcat-test   1/1     Running   0          3m6s
```
- **作用**:列出带有标签 `app=tomcat` 的 Pod。
- **输出**:与第一个命令类似,但只显示带有指定标签的 Pod。

### 5. `kubectl delete pod tomcat-test`
```bash
[root@master pod]# kubectl delete pod tomcat-test
pod "tomcat-test" deleted
```
- **作用**:删除名为 `tomcat-test` 的 Pod。
- **输出**:确认 Pod 已被删除。

### 总结
这些命令展示了如何查看、定义、筛选和删除 Kubernetes 中的 Pod。通过这些操作,可以有效地管理容器化应用。

基于deployment创建pod

[root@master pod]# kubectl apply -f nginx-deploy.yaml
deployment.apps/nginx-test created
[root@master pod]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
nginx-test-5fbcf9f6-rtvdw   1/1     Running   0          5s
nginx-test-5fbcf9f6-zgtv9   1/1     Running   0          5s
[root@master pod]# kubectl get deploy
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
nginx-test   2/2     2            2           9s
[root@master pod]# cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-test
  labels:
    app: nginx-deploy
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: my-nginx
        image: xianchao/nginx:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

1. apiVersion: apps/v1

  • 含义:指定使用的 Kubernetes API 版本,apps/v1 适用于 Deployment、StatefulSet 等资源。

2. kind: Deployment

  • 含义:定义资源类型为 Deployment,用于管理 Pod 的部署和更新。

3. metadata

  • 含义:资源的元数据。

    • name: nginx-test:Deployment 的名称为 nginx-test

    • labels:为 Deployment 添加标签 app: nginx-deploy,便于识别和管理。

4. spec

  • 含义:Deployment 的规格,定义了期望状态。

4.1 selector
  • 含义:定义 Deployment 如何选择管理的 Pod。

    • matchLabels:选择标签为 app: nginx 的 Pod。

4.2 replicas: 2
  • 含义:指定 Pod 的副本数为 2,即同时运行 2 个相同的 Pod。

4.3 template
  • 含义:定义 Pod 的模板,用于创建 Pod。

4.3.1 metadata
  • 含义:Pod 的元数据。

    • labels:为 Pod 添加标签 app: nginx,与 selector 中的 matchLabels 匹配。

4.3.2 spec
  • 含义:Pod 的规格,定义容器及其配置。

4.3.2.1 containers
  • 含义:定义 Pod 中的容器列表。

4.3.2.2 - name: my-nginx
  • 含义:容器名称为 my-nginx

4.3.2.3 image: xianchao/nginx:v1
  • 含义:使用镜像 xianchao/nginx:v1 启动容器。

4.3.2.4 imagePullPolicy: IfNotPresent
  • 含义:镜像拉取策略为 IfNotPresent,即本地存在则不拉取。

4.3.2.5 ports
  • 含义:定义容器暴露的端口。

    • - containerPort: 80:容器监听 80 端口。

总结

这个配置文件定义了一个名为 nginx-test 的 Deployment,它会创建 2 个运行 xianchao/nginx:v1 镜像的 Pod,每个 Pod 监听 80 端口,并通过标签 app: nginx 进行管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生的爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值