Namespace
1、K8S集群中默认的Namespace为default,通过Namespace可以实现Pod之间的相互隔离(如测试环境、生成环境的隔离)
 2、通过K8S的资源配置机制限定不同的Namespace对CPU、内存的使用,再通过K8S授权机制将不同的Namespace交给不同的租户进行管理,实现多租户资源的隔离
- 1、创建命名空间
 
kubectl create ns dev # 创建命名空间
 
kubectl delete ns dev # 删除命名空间,该空间下的所有资源也将被删除
 
- 2、创建命名空间(配置文件)
 
# ns-dev.yaml 文件
apiVersion: v1
kind: Namespace
metadata:
  name: dev
 
kubectl create -f /home/lixing/ns-dev.yaml # 创建命名空间
 
kubectl delete -f /home/lixing/ns-dev.yaml # 删除命名空间,该空间下的所有资源也将被删除
 
- 查询命名空间
 
kubectl get ns # 查询命名空间
 

 default 未指定命名空间的对象都会被分配到该空间
 kube-node-lease 集群节点之间的心跳维护
 kube-public 此命名空间下的资源可以被所有用户访问
 kube-system 由K8S系统创建的资源都会被分配到该空间
- 查询 kube-system 命名空间下的 deployment、pod、service 资源
 
kubectl get deployment,pods,service -n kube-system -o wide
 

deployment.apps/coredns 【CoreDNS 在K8s1.12版本之后成为K8S集群默认的DNS服务,主要用作服务发现】
pod/kube-apiserver-k8smaster【资源操作的唯一入口,接受用户输入的指令,提供认证、授权、API注册和发现等机制】
 pod/kube-scheduler-k8smaster【负责集群的资源调度,按照预定的策略将pod调度到相应的node节点上】
 pod/kube-controller-manager-k8smaster【负责维护集群的状态,程序部署、故障检测、自动扩展、滚动更新】
 pod/etcd-k8smaster【负责存储集群中各种资源的对象信息】
 pod/kube-proxy-b4j99【负责提供集群内部的服务发现和负载均衡,当前K8S集群一共3个节点】
 pod/kube-proxy-lllq9【负责提供集群内部的服务发现和负载均衡,当前K8S集群一共3个节点】
 pod/kube-proxy-mnfdn【负责提供集群内部的服务发现和负载均衡,当前K8S集群一共3个节点】
service/kube-dns【K8S的DNS服务】
Label
1、Namespace虽然可以对Pod进行隔离,但不同Namespace下的Pod是不能相互访问的
 2、Label通过K-V的形式在资源上添加标识,用它来对资源(Node、Pod、Service)进行区分和选择,实现资源的多纬度分组,以便灵活、方便地进行资源分配、调度、配置和部署等管理
-  
常用Label标签
架构标签:“tier”:“frontend|backend”
环境标签:“env”:“dev|test|pro”
版本标签:“version”:“release|stable” -  
Label标签选择器
env = test:选择所有Label中的key="env"并且value="test"的资源对象
env != test:选择所Label中的key="env"并且value!="test"的资源对象
env in (dev,test):选择所有Label中的key="env"并且value="dev"或value="test"的资源对象
env not in (dev,test):选择所有Label中的key="env"并且value!="dev"和value!="test"的资源对象
env = test,version != stable:选择所有Label中的key="env"并且value=“test”,并且key="version"并且value!="stable"的资源对象 -  
1、打标签
 
kubectl label pod nginx -n dev version=1.0 # 给Pod(nginx)添加标签(version=1.0)
 
kubectl label pod nginx -n dev version=2.0 --overwrite # 给Pod(nginx)更新标签(version=2.0)
 
kubectl label pod nginx -n dev version- # 给Pod(nginx)删除标签(version)
 
- 2、打标签
 
# pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata: 
  name: pod-nginx
  namespace: dev
  labels: 
    env: "test"
    version: "1.0"
spec: 
   containers: 
   - image: nginx:1.17.1
     imagePullPolicy: IfNotPresent
     name: container-nginx
     ports:
     - name: port-nginx
       containerPort: 80
       protocol: TCP
 
kubectl create -f /home/lixing/pod-nginx.yaml # 创建标签
 
kubectl delete -f /home/lixing/pod-nginx.yaml # 删除标签
 
- 查看标签
 
kubectl get pod nginx -n dev --show-labels # 查看Pod(nginx)的标签
 
- 筛选标签
 
kubectl get pod -l "version=1.0" -n dev --show-labels # 筛选Pod中标签为version=1.0
                


















