实战入门1 namespace
同一个ns 之下的pod 可以相互访问,否则不行.资源隔离
第二种资源配额机制.内存 不同的租户占用的资源是不一样的
集群默认创建的ns
get ns nsName.
describe ns nsName
资源配额-quota
资源限制-limit
kubectl create ns dev,创建名称空间
deltete ns Nsname,get ns Nsname
yaml文件方式创建名称空间
namespace 是资源边界,将不同的资源对象进行隔离
实战入门2 POD
根容器 用户容器
集群中的组件也是以pod 形式的运行的
创建并运行一个pod
run podsControllerName imgaeNameAndPatameter
pod控制器的名字,即为
deployment
get pods -n Nsname 查看一下
ready 1/1 有几个容器 运行状态,root容器不统计
ip是pod Ip,node是指当前pod被调度到哪个节点上运行
get pod -n dev -o wide ,获取详细信息,
environment: 环境变量
describe pod podName,获取pod的详细信息 名称空间,节点,标签 注解
events 用来排查错误
k8s 各个组件运行,也是以pod 形式运行的,
describe pod,可以查询pod 的事件信息
pod 重新创新ip 地址会改变
查看一下pod 控制器-get deployment
yaml方式单独运行 创建pod,不会默认创建pod控制器deployment
实践入门-label
label 标签,在资源上添加标识,对资源进行区分和选择
ns隔离的pod ,无法直接通信,可以使用label分组
打上标签之后,通过标签选择器,批量选定pod,进行分组
标签选择器labelSelctor key=? 且value=?
标签可以混合使用
--show-labels 查看有么有标签
打上标签 version=1.0
再次查看
更新 version=2.0,会提示你 --overwrite.覆盖的意思
挑选标签 -l "k=v"
删除标签 key- 后面跟上减号,就可以把标签删除了
4 pod 控制器
pod 是最小的控制单元,但k8s 不会直接控制,一般使用pod控制器(deployment)去控制,
deployment管理pod ,
这种情况下,你如果想删除pod,必须先删除pod 控制器,deployment
run 命令即会创建deployment 又会创建pod
k8s 名称空间删除,对应的pod 也会被删除
pod 的状态变成 terminating 状态,正在被删除 ,删除需要一定的时间
yaml创建Deployment ,template指定pod 创建的模板
创建service
上面访问pod,使用 curl ip:port 方式
但是一旦pod挂掉之后,新建的pod ip地址会变,该怎么解决呢?
解决办法,打标签,新建的pod的标签不会变
svc要暴露deployment 管理的pod,
port 访问svc的端口号, target-port 转发到pod的端口号
svc type=ClusterIP,集群ip,意思是只能在集群内部访问,外部无法访问
把类型改为NodePort ,就可以了 31928是节点的端口