• 003.kubernets对于namespace的管理


    一 Kuberbetes的架构简单介绍

    1.1 云计算的传统分类

    1.2 kubernetes基础架构

    工作机制

    • 用户通过kubectl向api-server提交需要运行的pod描述
    • api-server接收请求并将相关描述存储到etcd
    • scheduler 监控api-server拿到相关描述信息,开始扫描node节点,找到满足条件的node节点,将Pod与node的对应关系写入etcd
    • Kubelet定时请求api-server,拿到需要在本机运行的Pod信息,运行起来
    • 用户提交RC描述,rc控制器监视集群中的容器并保持数量
    • 用户提交service描述,由kube-proxy负责具体的工作流量转发

    1.3 创建一个容器的步骤

    1. 镜像从哪里获取以及版本号
    2. 镜像仓库是否需要认证,如果需要,请提供认证密钥
    3. 容器如果挂掉了,是否需要重启
    4. 容器是否需要挂载持久存储
    5. 是否为容器指定自己的dns
    6. 是否指定容器运行的节点
    7. 是否需要传递环境变量
    8. 容器启动之后,是否需要执行某些操作
    9. 容器在销毁时,是否需要执行某些操作
    10. 在什么情况下,我们认为容器是存活的
    11. 在什么情况下,我们认为容器是可以提供服务的
    12. 在容器启动之前,是否还需要做一些准备工作

    在前面已经安装完成一个kubernetes的集群

    [root@docker-server1 ~]# kubectl get nodes

    NAME              STATUS   ROLES    AGE    VERSION
    192.168.132.131   Ready    master   105m   v1.17.0
    192.168.132.132   Ready    <none>   92m    v1.17.0
    192.168.132.133   Ready    <none>   90m    v1.17.0

    [root@docker-server1 ~]# kubectl get pods -n kube-system      

    NAME                                      READY   STATUS    RESTARTS   AGE
    coredns-6955765f44-8kxdg                  1/1     Running   0          108m
    coredns-6955765f44-m66bw                  1/1     Running   0          108m
    etcd-192.168.132.131                      1/1     Running   0          108m
    kube-apiserver-192.168.132.131            1/1     Running   0          108m
    kube-controller-manager-192.168.132.131   1/1     Running   0          108m
    kube-flannel-ds-amd64-dbckr               1/1     Running   0          95m
    kube-flannel-ds-amd64-fg972               1/1     Running   0          93m
    kube-flannel-ds-amd64-m9lgq               1/1     Running   0          104m
    kube-proxy-7xgt9                          1/1     Running   0          95m
    kube-proxy-k8kb7                          1/1     Running   0          93m
    kube-proxy-q867d                          1/1     Running   0          108m
    kube-scheduler-192.168.132.131            1/1     Running   0          108m

     kubectl 主要管理集群中的资源对象,容器也是资源

    1.4 常用资源介绍

    Node
    Namespace
    Container
    Pod
    Label
    Annotations
    ReplicaController
    ReplicaSet
    Deployment
    HPA
    Service
    Job

    资源对象:分为集群级别资源(node,pv,clusterrole)和命名空间级别资源(pods)

    node:节点,node不属于任何命名空间,是集群资源

    二 namespace的简单操作

    集群安装的时候会自动帮助我们创建几个namesapce,查看namespace

    2.1 查看

    [root@docker-server1 ~]# kubectl get ns

    NAME                   STATUS   AGE
    default                Active   137m
    kube-node-lease        Active   137m
    kube-public            Active   137m
    kube-system            Active   137m
    kubernetes-dashboard   Active   82m

    kubectl get pods -n kube-system 这个操作就是查看kube-system 这个命名空间所有的容器

    当我们执行kubectl get pods,不指定命名空间的话 ,就去查询default这个默认的命名空间,但是没任何容器运行

    [root@docker-server1 ~]# kubectl get pods

    No resources found in default namespace.

    2.3 创建一个命名空间

    [root@docker-server1 ~]# kubectl create ns projecta

    也可以通过提交资源描述文件进行创建

    [root@docker-server1 ~]# kubectl get ns

    NAME                   STATUS   AGE
    default                Active   171m
    kube-node-lease        Active   171m
    kube-public            Active   171m
    kube-system            Active   171m
    kubernetes-dashboard   Active   116m
    projecta               Active   6s

    2.3  删除namespace

    [root@docker-server1 ~]# kubectl delete ns projecta

    [root@docker-server1 ~]# kubectl get ns

    NAME                   STATUS   AGE
    default                Active   173m
    kube-node-lease        Active   173m
    kube-public            Active   173m
    kube-system            Active   173m
    kubernetes-dashboard   Active   117m

    命名空间的命名规范

    [root@docker-server1 ~]# kubectl create ns Projecta

    The Namespace "Projecta" is invalid: metadata.name: Invalid value: "Projecta": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')

    从这里就可以看到规则

    2.4 资源描述文件操作namespace

    [root@docker-server1 ~]# mkdir -p /yamls/namespace

    [root@docker-server1 ~]# cd /yamls/namespace

    [root@docker-server1 namespace]# vim projectb.yaml

    apiVersion: v1       #API版本
    kind: Namespace      #资源类型
    metadata:     
      name: projectb     #命名空间名称

    [root@docker-server1 namespace]# kubectl apply -f projectb.yaml

    [root@docker-server1 namespace]# kubectl get ns

    NAME                   STATUS   AGE
    default                Active   3h18m
    kube-node-lease        Active   3h18m
    kube-public            Active   3h18m
    kube-system            Active   3h18m
    kubernetes-dashboard   Active   142m
    projectb               Active   19s

    删除命名空间

    [root@docker-server1 namespace]# kubectl delete -f projectb.yaml

    [root@docker-server1 namespace]# kubectl get ns

    NAME                   STATUS   AGE
    default                Active   3h18m
    kube-node-lease        Active   3h18m
    kube-public            Active   3h18m
    kube-system            Active   3h18m
    kubernetes-dashboard   Active   142m

    命名空间简单介绍到这里


    博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(https://www.cnblogs.com/breezey/)本人同意即可转载,谢谢!

  • 相关阅读:
    NAVICAT 拒绝链接的问题
    .net垃圾回收-原理浅析
    C#中标准Dispose模式的实现
    Windbg调试托管代码
    C#泛型基础
    .Net垃圾回收和大对象处理
    C++ 小知识点
    C++之虚函数表
    C++之指针与引用,函数和数组
    C++之const关键字
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/12182513.html
Copyright © 2020-2023  润新知