https://www.cnblogs.com/limengchun/p/11961098.html
kubectl cluster-info
kubectl get nodes 列出集群节点
kubectl describe node 节点名字 列出节点详细描述
kubectl run ktest --image=pglmc88/python_env:v1 --port=8080 --generator=run/v1
--image 指定docker镜像,--port 告诉kubernetes应用正在监听8080端口,--generator 创建一个ReplicationController,而不是Deployment
通常--generator不会使用到
一个物理工作节点包含多个pod, 一个pod包含至少一个容器
一 个 pod 是 一 组紧密相关的容器,它们总是 一 起运行在同 一 个工作节点上,以
及同一个 Linux 命名空间中。每 个 pod 就像 一 个独立的逻辑机器,拥有自己的 IP 、
主机名、进程等,运行 一 个独立 的应用程序 。应 用程序可以是单个进程,运行在单
个容器中,也可以是 一 个主应用进程或者其他支持进程,每个进程都在自己的容器
中运行 。一 个 pod 的所有容器都运行在同 一 个逻辑机器上,而其他 pod 中的容器,
即使运行在同 一 个工作节点上,也会出现在不同的节点(ip)上
每个pod 都 有自己的IP,并包含 一 个或多个容器, 每 个容器都运行 一 个应用进程 。 pod
分布在不同的工作节点上 。
pod 命令:
kubectl get pods
kubectl describe pod PodName
? 如何访问正在运行的 pod ?我们提到过每个 pod 都有自己的 IP 地址,但是这个
地址是集群 内部的,不能从 集群 外部访问 。要让 pod 能够从外部访问 , 需要通过服
务对象公 开它
? 通过创 建 LoadBalancer 类型 的服 务,将 创 建 一 个外 部的负载均衡 ,可以通过 负载
均衡的公共 IP 访问 pod
kubectl expose rc ktest --type==LoadBalancer --name ktest-http
rc 即为replicationcontroller 缩写
列出服务:
kubectl get services
通过上面命令可查看所有的服务,其中包含刚刚创建的ktest-http服务
Minicube 不支持LoadBalancer类型,所以不会有外部IP,但是可以通过端口访问服务
在Minicube 下可以通过
minicube service ktest-http来获取可以访问服务的Ip和端口号
在ktest 中, pod 只包含一个容器,但是通常pod可以包含任意多个容器,容器内部是Node.js集成,该进程绑定到8080端口,等待http请求,pod有自己独立的私有IP地址和主机名
确保始终存在 一 个运行中的 pod实例。 通常, ReplicationController 用于复制 pod (即创建 pod 的多个副本)并让它们保持运行。
系统的第三个组件是ktest-http服务,pod的存在是短暂的,一个pod在任何时候都可能消失,或许因为故障,或许是人为因素,当一个pod消失,ReplicationController会起作用,生成新的pod,新的pod拥有不同与前pod的ip地址,所以需要一个服务来解决不断变化的IP地址问题,以及一个固定IP和端口对外暴露多个pod
当一个服务被创建时,会得到一个静态IP,在服务生命周期这个IP不会发生变化,客户端应该通过固定IP来链接到服务,而不是直接链接到pod,服务会调度pod确保其中一个pod接收链接,而不关系pod当前运行在哪里
服务表示一组或多组相同服务的pod的静态地址,到达服务IP地址和端口的请求被转发到属于该服务的一个容器的IP和端口
我们知道pod由一个ReplicationController管理,而通过ReplicationController可以很方便的对pod进行扩容
# 增加pod的副本数为3,实现水平扩容
kubectl scale rc kubia --replicas=3
# 查看副本数
kubectl get rc
当多次请求服务的URL时,请求会随机地切换到不同的pod,当pod有多个实例时,kubernetes服务就会这样做.服务作为负载均衡挡在多个pod前面。当只有一个pod时,服务为单个pod提供一个静态地址。
无论服务后面是单个pod还是一组pod,这些pod在集群内创建,消失,这意味着它们的IP地址会发生变化,但是服务的地址总是相同的。所以pod被调度到哪个节点(IP)上都是无关紧要的,因为不管调度到哪个节点,容器中的应用都具有相同类型的操作系统。每个pod都有自己的IP,并且可以与任何其他pod通信,每个pod都被分配到所需的计算资源,因此这些资源是由一个节点提供还是另一个节点提供没有区别
#列出pod时显示pod IP和pod的节点
kuectl get pods -o wide
# 查看pod的其他细节
kubectl describe pod PodName
minicube dashboard # 图形化k8s管理界面
原文:https://www.cnblogs.com/limengchun/p/11981311.html