更多kubernetes文章:k8s专栏目录
版本
1.9.0
安装:
我们通过kubeadm工具安装,安装些基本组件 如 kubeadm kubectl kubelet,其他通过kubeadm配置启动,具体在kubeadm init的时候都会打印出来,可以看到。
单独安装docker,并且k8s对docker兼容的版本有限制,并不支持最近的docker版本。k8s会支持不仅一种容器,不仅是docker。
组件作用:
kubeadm 用来master初始化集群 node加入集群
kubectl 脚本命令包 用来对集群操作的,授权之后就可以对集群操作了。可以用root 非root用户操作。可以在master机器(默认)上授权操作。猜测也可以在node机器,集群外机器(接口机)上授权操作。
kubelet 每台节点都要安装,集成了cAdvisor,收集本机信息,node与master通信。
kubeadm在初始化集群时还会通过docker启动一些服务,master独有etcd,apiserver,kube-controller-manager,kube-scheduler,kube-dns。每台机器上都会启动kube-proxy。如果使用了flannel网络的话,还有kube-flannel。其他网络应该是对应其他网络服务容器。
master是可以HA的。
etcd用于存储k8s信息
apiserver 是api中心,https restful api和kubectl命令应该都访问这里
kube-controller-manager
kube-scheduler
kube-dns
kube-proxy kube-flannel 用于实现虚拟网络。容器分配ip是在kube-flannel上。其他服务端口转发,服务ip应该都是靠这些服务来支持的。
nvidia-device-plugin,是容器中使用gpu使用的。看起来只起在node节点上,可能master需要再找一台机器,不要浪费gpu资源。
NAME READY STATUS RESTARTS AGE IP NODE
po/etcd-tensorflow0 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kube-apiserver-tensorflow0 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kube-controller-manager-tensorflow0 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kube-dns-6f4fd4bdf-pk4d5 3/3 Running 0 5h 172.17.0.2 tensorflow0
po/kube-flannel-ds-bzxfk 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kube-flannel-ds-d5g44 1/1 Running 0 5h 192.168.163.13 tensorflow2
po/kube-flannel-ds-t74hh 1/1 Running 0 5h 192.168.163.12 tensorflow1
po/kube-proxy-fs58k 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kube-proxy-jmk45 1/1 Running 0 5h 192.168.163.12 tensorflow1
po/kube-proxy-p5r9w 1/1 Running 0 5h 192.168.163.13 tensorflow2
po/kube-scheduler-tensorflow0 1/1 Running 0 5h 192.168.163.11 tensorflow0
po/kubernetes-dashboard-58f5cb49c-z4pbk 1/1 Running 0 5h 10.244.1.2 tensorflow1
po/nvidia-device-plugin-daemonset-4rbj2 1/1 Running 0 4h 10.244.2.2 tensorflow2
po/nvidia-device-plugin-daemonset-nscfk 1/1 Running 0 4h 10.244.1.3 tensorflow1
监控:
cAdvisor+Heapster+InfluxDB+Grafana
cAdvisor是自带监控,集成进了 kubelet,采集每台机器的信息
Heapster是容器集群监控和性能分析工具。
InfluxDB作为后端存储
Grafana作为前端界面展示。
dashboard 可选组件,k8s配套界面,可以查看很多集群,节点,容器信息,进行操作等等。可能通过restful api访问apiserver实现的。需要授权才能访问。
dashboard没有默认没有机器状态的信息,支持通过安装Heapster来显示监控信息。
以上都可以通过容器启动
权限管理:
1.6新增RBAC授权。简单来说就是权限--角色--用户的管理关系。
初始化时就创建了不少规则,所以可以集群操作。其他更多的个性化的权限就要自定义权限来管理了。通过创建角色,权限绑定关系等等来实现。权限可以通过token来授权,也可以通过账号密码来授权。