k8s基础资源之pod详解

k8s基础资源之pod详解

文档配视频效果更佳哦:视频传送门---->视频地址
Kubernetes 是用来管理容器集群的平台。既然是管理集群,那么就存在被管理节点,针对每个 Kubernetes 集群都由一个 Master 负责管理和控制集群节点。
我们通过 Master 对每个节点 Node 发送命令。简单来说,Master 就是管理者,Node 就是被管理者。
Node 可以是一台机器或者一台虚拟机。在 Node 上面可以运行多个 Pod,Pod 是 Kubernetes 管理的最小单位,同时每个 Pod 可以包含多个容器(Docker)。

主节点:承载 k8s 的控制和管理整个集群系统的控制面板
工作节点:运行用户实际的应用(应用服务,微服务)

1、pod相当于逻辑主机,每个pod都有自己的ip地址
2、pod内的容器共享相同的ip和端口空间
3、默认情况下,每个容器的文件系统与其他容器完全隔离
4、pod 是逻辑主机,其行为与非容器世界中的物理主机或虚拟机非常相似。此外,运行在同一个pod中的进程与运行在同一物理机或虚拟机上的进程相似,只是每个进程都封装在一个容器之中。

创建pod的两种方式
1.命令方式
# 创建一个nginx pod 
kubectl run --help
[root@k8s-master01 ~]# kubectl run nginx --image=nginx:1.18
[root@k8s-master01 ~]# kubectl get pod -owide
NAME        READY   STATUS             RESTARTS       AGE   IP               NODE         NOMINATED NODE   READINESS GATES
busybox     1/1     Running            31 (20m ago)   31h   172.171.14.246   k8s-node02   <none>           <none>
hazelcast   0/1     ImagePullBackOff   0              49m   172.171.14.255   k8s-node02   <none>           <none>
nginx       1/1     Running            0              7s    172.171.14.195   k8s-node02   <none>           <none>


curl 172.171.14.195

# 进入pod
[root@k8s-master01 ~]# kubectl exec -it nginx bash

# 删除pod
[root@k8s-master01 ~]# kubectl delete pod nginx
pod "nginx" deleted
[root@k8s-master01 ~]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   30         30h
[root@k8s-master01 ~]# kubectl get pod nginx -o yaml
2.yaml文件方式
Kubernetes只支持YAML和JSON格式创建资源对象
JSON格式用于接口之间消息的传递,YAML格式用于配置和管理
YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。
[root@k8s_master ~]# vim nginx-deploy.yaml 
apiVersion: apps/v1             #版本号,pod资源
kind: Deployment                #类型/控制器
metadata:                       #数据标签
  name: nginx-deployment
  labels:                        #子标签
    app: nginx                    #业务容器
spec:
  replicas: 3                    #副本集
  selector:                        #选择器
    matchLabels:                #匹配标签
      app: nginx                #对应上面的业务容器
  template:                        #模板
    metadata:
      labels:
        app: nginx
    spec:
      containers:               #容器
      - name: nginx             #对应上面的业务容器
        image: nginx:1.18       #镜像
        ports:
        - containerPort: 80     #容器端口信息
---
apiVersion: v1                  #版本号
kind: Service                   #服务类型
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  type: NodePort                #端口映射
  ports:
  - port: 80                     #内部端口
    targetPort: 80              #映射端口
  selector:                     #选择器/
    app: nginx                    #选择业务进行发布
    
    
[root@k8s_master01 ~]# kubectl create -f nginx-deploy.yaml --dry-run
[root@k8s_master01 ~]# kubectl create -f nginx-deploy.yaml
[root@k8s-master01 pod]# kubectl get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP        8d
nginx-service   NodePort    10.105.121.207   <none>        80:32042/TCP   6s

# 浏览器访问
http://192.168.1.114:32042/
posted @ 2021-12-22 16:19  老王教你学Linux  阅读(418)  评论(0编辑  收藏  举报