美文网首页linux运维
k8s部署-31-k8s中如何进行资源隔离资源

k8s部署-31-k8s中如何进行资源隔离资源

作者: 运维家 | 来源:发表于2022-04-09 11:38 被阅读0次

在k8s中的我们的资源如何隔离呢?如果说有一个服务异常了,内存无限制的占用,其他的服务岂不是无法部署上去了?而且我们一般一个集群是给很多人,很多对象使用的,那么如何保证他们互不打扰?且无法看到其他人的相关内容呢?

Namespace

一个重要的概念,Namespace,我们之前说过,但是没有细说他的功能是什么,他可以实现资源隔离和配额的隔离,比如下面的信息:

从上图可以清晰的看到他能做什么,接下来实际操作下吧。

新建namespace

首先我们先查询下本地有多少个namespace;

[root@node1 ~]# kubectl get namespaceNAME              STATUS   AGEdefault           Active   18dkube-node-lease   Active   18dkube-public       Active   18dkube-system       Active   18d[root@node1 ~]#

再看下命名空间中都有什么呢?这里我们只查看pod哈。

[root@node1 ~]# kubectl get podsNAME                                 READY   STATUS    RESTARTS   AGEdeploy-springboot-5dbfc55f78-mpg69   1/1     Running   1          21hnginx-ds-q2pjt                       1/1     Running   17         11dnginx-ds-zc5qt                       1/1     Running   22         17d[root@node1 ~]# kubectl get pods -n kube-node-leaseNo resources found in kube-node-lease namespace.[root@node1 ~]# kubectl get pods -n kube-publicNo resources found in kube-public namespace.[root@node1 ~]# kubectl get pods -n kube-systemNAME                                       READY   STATUS             RESTARTS   AGEcalico-kube-controllers-858c9597c8-6gzd5   1/1     Running            29         17dcalico-node-6k479                          1/1     Running            21         17dcalico-node-bnbxx                          1/1     Running            21         17dcoredns-84646c885d-6fsjk                   1/1     Running            21         17dcoredns-84646c885d-sdb6l                   1/1     Running            21         17dkube-flannel-ds-d7kvz                      0/1     CrashLoopBackOff   614        11dkube-flannel-ds-klfvj                      0/1     CrashLoopBackOff   612        11dnginx-proxy-node3                          1/1     Running            22         18dnodelocaldns-gj9xf                         1/1     Running            21         17dnodelocaldns-sw9jh                         1/1     Running            21         17d[root@node1 ~]#

从上面可以看到,如果不指定命名空间的话,默认访问的是名字为default的命名空间,如果我们想看到其他命名空间下的资源,我们需要手动使用“-n”参数来指定。而且,如果你创建的时候没有指定namespace,那么默认也是都在default这个命名空间下的。

那么接下来我们来创建一个命名空间吧。

[root@node1 ~]# mkdir namespace[root@node1 ~]# cd namespace/[root@node1 namespace]# vim create_namespace.yamlapiVersion: v1kind: Namespacemetadata:  name: dev[root@node1 namespace]# kubectl create -f create_namespace.yaml namespace/dev created[root@node1 namespace]# 

那么我们就创建了一个名字叫dev的命名空间,我们查看下:

[root@node1 namespace]# kubectl get namespaceNAME              STATUS   AGEdefault           Active   18ddev               Active   69skube-node-lease   Active   18dkube-public       Active   18dkube-system       Active   18d[root@node1 namespace]#

新建一个pod

[root@node1 namespace]# vim web-demo.yaml #deployapiVersion: apps/v1kind: Deploymentmetadata:  name: web-demo  namespace: devspec:  selector:    matchLabels:      app: web-demo  replicas: 1  template:    metadata:      labels:        app: web-demo    spec:      containers:      - name: web-demo        image: registry.cn-beijing.aliyuncs.com/yunweijia0909/tomcat:jre8-openjdk        ports:        - containerPort: 8080---#serviceapiVersion: v1kind: Servicemetadata:  name: web-demo  namespace: devspec:  ports:  - port: 80    protocol: TCP    targetPort: 8080  selector:    app: web-demo  #type: ClusterIP---#ingressapiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: web-demo  namespace: devspec:  rules:  - host: web.yunweijia.com    http:      paths:      - path: /        pathType: Prefix        backend:          service:            name: web-demo-dev            port:              number: 80[root@node1 namespace]# kubectl apply -f web-demo.yaml deployment.apps/web-demo createdservice/web-demo createdingress.networking.k8s.io/web-demo created[root@node1 namespace]#

然后查看下dev这个命名空间下是否有了;

[root@node1 namespace]# kubectl get pods -n devNAME                        READY   STATUS    RESTARTS   AGEweb-demo-58bf7ccc9c-d7gxl   1/1     Running   0          42s[root@node1 namespace]# kubectl get all -n devNAME                            READY   STATUS    RESTARTS   AGEpod/web-demo-58bf7ccc9c-d7gxl   1/1     Running   0          46sNAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGEservice/web-demo   ClusterIP   10.233.101.225   <none>        80/TCP    46sNAME                       READY   UP-TO-DATE   AVAILABLE   AGEdeployment.apps/web-demo   1/1     1            1           46sNAME                                  DESIRED   CURRENT   READY   AGEreplicaset.apps/web-demo-58bf7ccc9c   1         1         1       46s[root@node1 namespace]#

测试下命名空间的隔离性

首先我们需要在default这个命名空间下新建个两个pod,然后去做测试,因为我现在就有nginx这个pod,所以再启动一个tomcat的pod吧。

如果看过我之前的文章,你应该在default命名空间中有较多的pod,就不用新建了,我这里是演示完就删了,所以没了。

剩余内容请转至VX公众号 “运维家” ,回复 “138” 查看。

相关文章

  • k8s部署-31-k8s中如何进行资源隔离资源

    在k8s中的我们的资源如何隔离呢?如果说有一个服务异常了,内存无限制的占用,其他的服务岂不是无法部署上去了?而且我...

  • 7 持续交付

    资源更新 部署任务的目标是确保软件能在恰当的位置正常工作,k8s中重要的是如何正确的更新资源,尤其是pod 触发更...

  • 外部Prometheus监控k8s集群资源

    Prometheus监控k8s资源 通过Prometheus监控k8s集群中各种资源:如微服务,容器资源指标 并在...

  • OpenShift Router通过分片实现不同环境网络南北流量

    在企业实践中,通常会部署多个OpenShift集群:开发测试、生产等。每个集群都是独立的,通过物理资源进行隔离。这...

  • kubernetes容器编排YAML详解

    简单认识 k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式( YAML)文件来解决, 也 就是可以把需...

  • k8s与GPU

    为什么要用k8s管理以GPU为代表的异构资源? 加速部署:通过容器构建避免重复部署机器学习复杂环境 提升集群资源使...

  • 《kubernetes in Action》读书笔记

    1. k8s介绍 k8s对各异构的数据中心进行了资源抽象,提供资源管理、编排能力。因为k8s提供了统一的资源抽象能...

  • 19-yaml 编排资源

    任何资源都可以通过 yaml 的方式创建出来 一、查看 k8s 中的资源 二、获取 k8s 中的资源的yaml模板...

  • 解决k8s调度不均衡问题

    前言 在近期的工作中,我们发现 k8s 集群中有些节点资源使用率很高,有些节点资源使用率很低,我们尝试重新部署应用...

  • k8s 资源清单与pod

    k8s中的资源 k8s中所有的内容都抽象成了资源,资源实例化后,称为对象。所有对象可以通过 get delete ...

网友评论

    本文标题:k8s部署-31-k8s中如何进行资源隔离资源

    本文链接:https://www.haomeiwen.com/subject/yxdvsrtx.html