目录
kubernetes架构
Master节点
Node节点
Add-ons
Kubeadm
namespace
kubernetes架构
一个基础的kubernetes集群包含一个master节点和多个node节点。每个节点可以是一台物理 机,也可以是一台虚拟机
Master 节点:提供的集群控制,对集群做出全局性决策,例如调度等。通常在master节点上不运行用户容器。
节点组件:运行在每一个Node节点上,维护运行的pod并提供kubernetes运行时环境。
Master节点
Kube-apiserver
kube-apiserver对外暴露了Kubernetes API。它是的 Kubernetes 前端控制层。它被设计为水平扩展,即通过部署更多实例来缩放
Etcd
etcd 用于 Kubernetes 的后端存储。所有集群数据都存储在此处,始终为您的 Kubernetes 集群的 etcd 数据提供备份计划。
kube-controller-manager
运行控制器,它们是处理集群中常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成独立的可执行文件,并在单个进程中运行。
kube-scheduler
监视没有分配节点的新创建的 Pod,选择一个节点供他们运行。
Node节点
Kube-proxy
Kube-proxy用于管理service的访问入口,包括集群内pod到service的访问和集群外访问service。
Kubelet
Kubelet是在集群内每个节点中运行的一个代理,用于保证pod的运行
容器引擎
通常使用docker来运行容器,也可使用rkt等做为替代方案。
查看组件运行状态
Docker:
[root@k8s-node1 runfile]# systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2019-04-28 18:00:36 CST; 2 weeks 3 days ago
kubelet:
[root@k8s-node1 runfile]# systemctl status kubelet
kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Sun 2019-04-28 17:15:03 CST; 2 weeks 3 days ago
查看node节点的所包含的系统pod
[root@k8s-node1 runfile]# kubectl get pods --field-selector spec.nodeName=k8s-node2 --namespace=kube-system NAME READY STATUS RESTARTS AGE kube-flannel-ds-amd64-7tn6g 1/1 Running 2 18d kube-proxy-q8xmm 1/1 Running 2 18d
Add-ons
kubernetes使用中通常需要一些额外的组件实现特定功能,常用的Add-ons包括:
Core-dns:为整个集群提供DNS服务
Ingress Controller:为service提供外网访问入口
Dashboard: 提供图形化管理界面
Heapster 提供集群资源监控
Flannel:为kubernetes提供方便的网络规划服务
Kubeadm
Kubeadm是社区主推的快速创建Kubernetes集群工具。
kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是之前的节点准备工作。同样的,诸如安装各种各样值得拥有的插件,例如 Kubernetes Dashboard、监控解决方案以及特定云提供商的
Master节点:kubeadm init,快速初始化安装主节点组件
Node节点:kubeadm join,将从节点加入集群
Kubeadm为了实现部署的便捷性,将一些组件封装到了Pod中。 Master节点:
[root@k8s-master]# kubectl get pods --field-selector spec.nodeName=k8s-master --namespace=kube-system NAME READY STATUS RESTARTS AGE coredns-fb8b8dccf-j4kn5 1/1 Running 3 18d coredns-fb8b8dccf-mx6pw 1/1 Running 3 18d etcd-k8s-master 1/1 Running 2 18d kube-apiserver-k8s-master 1/1 Running 3 18d kube-controller-manager-k8s-master 1/1 Running 2 18d kube-flannel-ds-amd64-lfslh 1/1 Running 3 18d kube-proxy-dt69s 1/1 Running 2 18d kube-scheduler-k8s-master 1/1 Running 2 18d kubernetes-dashboard-5f798cc594 1/1 Running 3 18d
namespace
Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
命名空间提供了良好的资源隔离,可以用于区分不通的项目、用户等。如开发测试使用的namespace,或者生产使用的namespace。
使用如下命令可以查看哪些对象在命名空间中:
kubectl api-resources --namespaced=true
查看存在哪些namespace。
kubectl get namespace kubectl get pod –namespace=kube-system kubectl get pod –n kube-system



