02-Kubernetes中的NameSpace与Pod

目 录

      • 1. NameSpace
        • 1.1 NameSpace是什么
        • 1.2 NameSpace相关的命令
          • 1.2.1 使用命令行方式
          • 1.2.2 使用yaml文件的方式
      • 2. Pod
        • 2.1 什么是Pod
        • 2.2 Pod相关的命令
          • 2.2.1 使用命令行方式
          • 2.2.2 使用yaml文件的方式
        • 2.3 Pod中多个容器示例

1. NameSpace

1.1 NameSpace是什么

NameSpace 称作名称空间或者命名空间,用于对集群资源进行隔离划分,默认只是隔离资源,不隔离网络。

02-Kubernetes中的NameSpace与Pod_第1张图片

1.2 NameSpace相关的命令

在 k8s 中,创建资源有两种方式,一种是命令行方式,另外一种是使用 yaml 文件的方式。

1.2.1 使用命令行方式

(1)查看集群中命名空间列表

kubectl get ns

kubectl get namespace

(2)创建命名空间

kubectl create ns 命名空间名称

(3)删除命名空间

kubectl delete ns 命名空间名称

注意点:如果删除命名空间,会把该命名空间下的所有资源连带删除。

1.2.2 使用yaml文件的方式

(1)先写一个 yaml 文件,比如 hello-world.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: hello-world #这里写命名空间名称,例如这里叫hello-world

(2)使用上面的 yaml 文件,创建命名空间

kubectl apply -f hello-world.yaml

(3)删除命名空间

kubectl delete -f hello-world.yaml

2. Pod

2.1 什么是Pod

Pod:运行中的一组容器,Pod 是 Kubernetes 中应用的最小单位。

02-Kubernetes中的NameSpace与Pod_第2张图片
注意点:一个 Pod 代表一组容器,一组之中可以只有一个容器,也可以有多个容器。

上图表示一个 Pod 中只有一个容器,当然也可以把 Redis Container、Java App Container、Vue App Container 三个容器放到同一个 Pod 中,组成一组。

一个 Pod 能正常工作的基础是这个 Pod 中的所有容器都能正常工作,在 k8s 中只谈 Pod,不谈具体的哪个容器,因为 k8s 操作的最小单位只到 Pod 这一层。

02-Kubernetes中的NameSpace与Pod_第3张图片

2.2 Pod相关的命令

2.2.1 使用命令行方式

(1)查看 Pod

# 查看指定命名空间下的pod
kubectl get pod -n 命名空间名称

# 查看所有命名空间下的所有pod
kubectl get pod -A

(2)创建 Pod

kubectl run Pod的名字 --image=容器镜像名 -n 命名空间名称

#示例,在hello-world命名空间下起一个nginx的Pod
kubectl run my-nginx --image=nginx -n hello-world

(3)描述 Pod 运行详情信息(排错常用)

kubectl describe pod  Pod的名字 -n 命名空间名称

#示例,查看hello-world命名空间下的my-nginx的详情
kubectl describe pod my-nginx -n hello-world

(4)删除 Pod

kubectl delete pod Pod的名字 -n 命名空间名称

#示例,删除hello-world下的nginx的Pod
kubectl delete pod my-nginx -n hello-world

(5)查看 Pod 的运行日志

kubectl logs Pod的名字 -n 命名空间名称

(6)查看 Pod 的详细信息,比如 IP

kubectl get pod -owide -n 命名空间名称

(7)使用 Pod 的 IP+Pod里面运行容器的端口来访问 Pod

curl 192.168.169.136:80

(8)使用 k8s 命令进入到容器里面

kubectl exec -it my-nginx -n 命名空间名称 -- /bin/bash

(9)退出容器

exit

在集群环境中,集群中的任意一个机器以及任意的应用都能通过 Pod 分配的 IP 来访问这个 Pod 。

2.2.2 使用yaml文件的方式

(1)写一个 yaml 文件,比如 nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: mynginx
  name: my-nginx   # Pod的名字
  namespace: hello-world # Pod所属命名空间
spec:
  containers:
  - image: nginx # 容器的镜像名称
    name: nginx-v1 # 容器名称

(2)使用 yaml 文件创建 Pod

kubectl apply -f nginx-pod.yaml

(3)删除 Pod

kubectl delete -f nginx-pod.yaml

2.3 Pod中多个容器示例

(1)写一个 yaml 文件,比如 myapp.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp
  name: myapp
  namespace: hello-world
spec:
  containers:
  - image: nginx
    name: nginx
  - image: tomcat:8.5.68
    name: tomcat

(2)使用 yaml 文件创建 Pod

kubectl apply -f myapp.yaml

(3)集群中访问 nginx

curl 192.168.169.136:80

(4)集群中访问 tomcat

curl 192.168.169.136:8080

02-Kubernetes中的NameSpace与Pod_第4张图片

你可能感兴趣的