kubernetes

kubernetes入门

kubernetes_第1张图片

不论何种语言编写的服务,都可以被映射为kubernetes的service,通过标准的Tcp通信协议进行交互
在kubernetes中,service是分布式集群架构的核心,一个service对象拥有如下关键特征
拥有唯一指定的名称
拥有一个虚拟IP地址(clusterip)和端口号
能够提供某种远程服务能力
能够将客户端对服务的访问请求转发到一组容器应用上
service的服务进程通常通过socket通信方式对外提供服务
每个service进程都有一个独立的endpoint访问点
kubernetes通过service链接指定的服务
kubernetes内建的透明负载均衡和故障恢复机制
service一旦被创建就不能被改变
每个service都包装到相应的pod,使service成为pod中的一个container
为了给service和pod建立链接,给pod添加了一个Lable
pod被运行在一个被称为节点的环境中
每个pod中都运行这一个特殊的被称为pause的容器,其他容器为业务容器
这些业务容器共享pause容器的网络栈和volume挂载卷,因此他们之间的通信和数据交换更为高效
只有提供服务的那组pod才会被映射为一个服务
集群管理
kubernetes将集群中的机器划分为Master和node
master上运行这集群管理相关的一些进程:
kube-apiserver
kube-controller-manager
kube-scheduler
这些进程实现了集群的资源管理,pod调度,弹性伸缩,安全控制,系统监控和纠错,都是自动完成的
node:集群中的工作节点,其上运行这真正的应用程序
在Node上,kubernetes管理的最小运行单元是pod,在Node上运行这kubernetes的kubelet,kube-proxy服务进程,这些服务进程负责pod的创建,启动,监控,重启,销毁以及实现软件模式的负载均衡器
在kubernetes中只需要为需要扩容的service关联的pod创建一个deployment对象,服务扩容及服务升级就解决了
deployment
目标pod的定义
目标pod需要运行的副本数量
要监控的目标pod标签
kubernetes根据目标pod需要运行的副本数量来自动创建,如果需要扩容,只需要修改此项即可。
docker network

使用deployment来定义需要启动的服务
将deployment的yaml文件发布到kubernetes集群中使用
kubectl apply -f *.yaml
查看刚创建的deployment
kubectl get deploy
查看pod的创建情况
kubectl get pods
status:pending->running
使用docker ps查看运行的容器
创建kubernetes service与pod关联
kubectl create -f *.yaml
查看刚创建的service
kubectl get svc mysql
clusterup是在service创建后由kubernetes系统自动分配的,其他pod无法预先知道某个service的clusterip地址
因此需要一个服务发现机制:使用linux环境变量来解决

kubernetes_第2张图片
通用属性:版本,标签,类别,名称,注解
每个资源对象保存在etcd这种非关系型数据库中
所有资源都可以通过kubectl工具执行增删改查操作
查看集群中有多少个Node
get nodes
查看某个node的详细信息
kubectl describe node

kubernetes_第3张图片

参考资料

kubernetes权威指南

你可能感兴趣的:(kubernetes,go,kubernetes,docker,容器)