K8S Namespace-集群的共享与隔离

隔离

  • 资源对象的隔离:Service、Deployment、Pod
  • 资源配额的隔离:Cpu、Memory
[hemei@master test]$ kubectl get namespaces
NAME              STATUS   AGE
aimp              Active   158d
default           Active   240d
dep-test          Active   160d
harbor            Active   116d
istio-system      Active   150d
kafka             Active   136d
kube-node-lease   Active   240d
kube-public       Active   240d
kube-system       Active   240d
model-svc         Active   187d
monitoring        Active   136d
nginx-system      Active   240d
online-log        Active   128d
seldon-system     Active   240d
test              Active   226d

查看指定命名空间的pod

[hemei@master test]$ kubectl get pod -n model-svc
NAME                                                      READY   STATUS    RESTARTS   AGE
houseprice-m437-v1-0-m604-578df4645f-5d4z7                2/2     Running   0          53d
model-service-app-deploy-545d868954-tdnnr                 1/1     Running   0          31d
model-service-celery-deploy-6d54bbf6d5-wzz8k              1/1     Running   485        39d
test-0323-m630-v1-0-m811-c5fd8dfd9-jlswv                  2/2     Running   0          39d
test1-m582-v1-0-m754-84b644775c-bbfd7                     2/2     Running   0          23d
test299-m580-v2-0-m753-b5677ccd-jz6h4                     2/2     Running   0          16d
xgboost-m437-v1-batch-predictor-0-m604-6fd9b79596-kj4fz   2/2     Running   0          53d
xgboost-m580-v2-batch-predictor-0-m753-897b787dd-pvqhl    2/2     Running   0          10d
xgboost-m582-v1-batch-predictor-0-m754-5d99ff6f44-wxqb2   2/2     Running   0          23d
xgboost-m624-v2-batch-predictor-0-m813-7bf55dd6cf-28r6s   2/2     Running   0          39d
[hemei@master test]$ 

创建命名空间:
namespace-dev.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: dev

部署

kubectl create -f namespace-dev.yaml

或者直接通过命令来创建:

kubectl create ns test

查看创建的命名空间:

[hemei@master test]$ kubectl get namespaces
NAME              STATUS   AGE
aimp              Active   158d
default           Active   240d
dep-test          Active   160d
dev               Active   10s
harbor            Active   116d
istio-system      Active   150d
kafka             Active   136d
kube-node-lease   Active   240d
kube-public       Active   240d
kube-system       Active   240d
model-svc         Active   187d
monitoring        Active   136d
nginx-system      Active   240d
online-log        Active   128d
seldon-system     Active   240d
test              Active   226d

进入到pod里边:

[hemei@master test]$ kubectl get pods
NAME                                               READY   STATUS    RESTARTS   AGE
nfs-subdir-external-provisioner-6dcc58bb4b-8fc84   1/1     Running   11         150d
tomcat-demo-54cbbcffdb-2hn5h                       1/1     Running   0          62m
[hemei@master test]$ kubectl exec -it tomcat-demo-54cbbcffdb-2hn5h bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
bash-4.4# 

划分方式

  • 按环境划分:dev、test
  • 按团队划分
  • 自定义多级划分

kubectl create 和 kubectl apply区别

  1. 描述:
    
    kubectl create -f xx.yaml

kubectl apply -f xx.yaml



如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的pod

那二者有什么区别呢?

2. 区别:

kubectl create:

(1)kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的

(2)kubectl create命令,用同一个yaml 文件执行替换replace命令,将会不成功,fail掉。

kubectl apply:

  kubectl apply命令,根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性

为者常成,行者常至