xiaojizhi2023

V1

2023/03/08阅读:14主题:默认主题

kubernetes使用之一

Kubernetes使用之一

简介

  1. Pod定义:Pod是Kubernetes中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,就可以用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程;

  2. Pod网络:Pod是有IP地址的,每个pod都被分配唯一的IP地址(IP地址是靠网络插件calico、flannel、weave等分配的),Pod中的容器共享网络名称空间,包括IP地址和网络端口,Pod内部的容器可以使用localhost相互通信,Pod中的容器也可以通过网络插件calico与其他节点的Pod通信;

  3. Pod存储:Pod创建的时候可以指定挂载的存储卷,Pod中的所有容器都可以访问共享卷,允许这些容器共享数据,Pod只要挂载持久化数据卷,Pod重启之后数据还是会存在的;

  4. Kubernetes支持多个虚拟集群,它们底层依赖于同一个物理集群,这些虚拟集群被称为命名空间,命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、.production环境分别创建各自的命名空间。

Kubernetes 组件介绍

  1. Master 节点

    • kube-apiserver:API 集群统一入口,各组件协调者,以 HTTP API 提供接口服务,所有对象资源的增删查改和监听操作都交给 APIServer 处理后再提交给 Etcd 存储;
    • kube-scheduler:(调度器)负责对资源进行调度,分配未分发 Pod 绑定到可用的 Node 节点上,存储到 etcd 中;
    • kube-controller-manager:管理控制器,一个资源对应一个控制器,CotrolerManager 负责管理监控 pod 运行状态,根据 etcd 中的信息, 调用 node 中的 kubelet 创建 Pod;
    • Etcd:用来保存集群所有状态的 Key/Value 存储系统,所有 Kubernetes 组件会通过 API Server 来跟 Etcd 进行沟通从而保存或读取资源状态,如 Pod、service 等对象信息;
  2. Node 节点

    • kubelet:是 Master 在 Node 节点上的 Agent,负责具体的容器生命周期管理,根据从数据库中获取的信息来管理容器,并上报 pod 运行状态等,下载 secret、获取容器与节点状态,kubelet 将每个 Pod 装换成一组容器;
    • kube-proxy:在 Node 节点实现 Pod 网络代理;
    • docker/rocker/rkt:运行容器;
    • calico、coredns

应用

Pod资源清单

可通过 kubectl explain pods.metadata 命令查看对应的字段

可通过 kubectl logs -f podName 命令动态查看pod日志

可通过 kubectl exec -it podName -c containerName -- /bin/sh 命令进入到pod里的容器

kubectl run podName --image=anyu967/tomcat-8.5-jre8:v1 --image-pull-policy=IfNotPresent --port=8080

获取yaml配置 kubectl get pods podName -o yaml

apiVersion: v1
kind: Pod
metadata:
  # Pod的名字
  name: tomcat-test
  # 命名空间  
  namespace: default   
  labels:
    app: tomcat    # Pod具有的标签
spec:
  containers:    # <[]Object>
  - name: tomcat-java   # Pod里容器的
    ports:
    - containerPort: 8080
      name: web
    image: anyu96/tomcat-8.5.jre8:v1
    imagePullPolicy: IfNotPresent
{
    "apiVersion""v1",
    "kind""Pod",
    "metadata": {
        "name""tomcat-test",
        "namespace""default",
        "labels": {
            "app""tomcat"
        }
    },
    "spec": {
        "containers": [
            {
                "name""tomcat-java",
                "ports": [
                    {
                        "containerPort"8080,
                        "name""web"
                    }
                ],
                "image""anyu96/tomcat-8.5.jre8:v1",
                "imagePullPolicy""IfNotPresent"
            }
        ]
    }
}

分类:

后端

标签:

云计算

作者介绍

xiaojizhi2023
V1