1、基础命令:kubectl管理集群资源命令
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kuberthe Ready <none> 29d v1.10.0
kubertwo Ready <none> 29d v1.10.0
master Ready master 29d v1.10.0
[root@master ~]# kubectl cluster-info
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kuberthe Ready <none> 29d v1.10.0
kubertwo Ready <none> 29d v1.10.0
master Ready master 29d v1.10.0
[root@master ~]# kubectl get node kubertwo 查看节点具体状态明细
NAME STATUS ROLES AGE VERSION
kubertwo Ready <none> 30d v1.10.0
[root@master ~]# kubectl describe node kubertwo
Name: kubertwo
Roles: <none>
2、kubectl基本单元是pod
[root@master yamls]# kubectl create -f pod.yaml
pod "nginx" created
[root@master yamls]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 0/1 ContainerCreating 0 4s
[root@master yamls]# kubectl describe pods nginx
Name: nginx
Namespace: default
Node: kuberthe/172.16.16.107
Start Time: Thu, 10 May 2018 14:46:08 +0800
Labels: <none>
Annotations: <none>
3、kuberctl分布式集群架构
kubernetes分布式集群架构
传统的架构:总体上零散,缺乏架构的整体性和系统性
服务注册表的方式,依然是入侵性的,缺乏直观性
“服务”这个概念本身并没有被作为架构的一等公民
程序架构跟运行时态是相对分散的,无法从根本上保证分布式架构的最初设计
分布式规模部署的难度从未真正彻底解决过
a、服务注册和服务发现问题怎么解决?
每个服务分配一个不变的虚拟ip+端口
系统env环境变量里有每个服务的服务名称到ip的映射
b、服务的负载均衡问题是怎么解决的?
每个节点上都有一个软件实现的服务代理来实现负载均衡。
c、服务的规模部署问题怎么解决的?
目标导向的做法:确定部署实例数,系统自动调度
d、服务运维问题如何解决的?
自动监控、自我修复
e、架构建议
集中配置,并且实时配置实施生效
3、kubernetes集群架构示例
a、创建redis-master pod和服务
先定义Service,然后定义一个RC类创建和控制相关联的pods,或者先定义RC来创建pods,然后与之关联的、Service,这两种方式最终的结果都是一样。
[root@master www]# kubectl get svc redis-master 查看状态
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-master ClusterIP 10.110.205.168 <none> 6379/TCP 2m
[root@master www]# kubectl describe svc redis-master 查看详细状态
Name: redis-master
Namespace: default
Labels: name=redis-master
Annotations: <none>
[root@kuberthe ~]# curl -I 127.0.0.1:30001
HTTP/1.1 200 OK
Date: Thu, 10 May 2018 08:27:42 GMT