Service
有了服务就可以对外集群外提供服务
示例
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
type: NodePort
ports:
- port: 8080
nodePort: 40000
selector:
app: kubia
kubectl describe svc 查看所有的服务的详情
kubectl describe svc myweb 仅查看 myweb 服务的详情
kubectl get svc 查看所有服务
kub get svc kubia -o yaml 查看服务 yaml 文件
Label 标签
各种资源都可以被label, 方便分类资源
添加
kubectl label node 192.168.255.129 os=ubuntu
kubectl get no -L os
NAME STATUS ROLES AGE VERSION OS
192.168.255.129 Ready <none> 1d v1.10.12 ubuntu
192.168.255.130 Ready <none> 1d v1.5.2
删除
kubectl label node 192.168.255.130 os-
修改
kubectl label no 192.168.255.129 os=unknown --overwrite
DaemonSet
简称 ds
会在每一个node上运行一个pod,通常干一些日志收集 和 资源监控的活。 具体运行啥pod,在 ds 的yaml里指定。
就算node被设定为不可调度的,也会运行一个pod。
可以使用 nodeSelector指定仅在特定的node上运行pod,具体如下
myds.yaml
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: ssd-monitor
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disk: ssd
containers:
- name: main
image: luksa/ssd-monitor
如上,ds 的pod 仅会在 标记有 disk=ssd 上的node 部署。
kubectl label node 192.168.255.129 disk=ssd 可以给node 添加这个label
kubectl create -f myds.yaml
daemonset.apps "ssd-monitor" created
kub get ds
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ssd-monitor 1 1 1 1 1 disk=ssd 5m
kub delete ds ssd-monitor // 删除比较耗时,耐心等待
daemonset.extensions "ssd-monitor" deleted
Job
负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务。
Job执行完成后就不会再执行了,如果运行中job自己失败了,可以被配置成是否重启。
job执行过程中node挂了,会被调度到其它的node重新执行。
如果你需要转移或导出一些数据,而这个操作比较耗时,你可以借助 job 来完成。
示例
apiVersion: batch/v1
kind: Job
metadata:
name: batch-job
spec:
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
启动后过一会儿查看运行结果
~/kubernetes/kubernetes-in-action/Chapter04 $ kub get job
NAME DESIRED SUCCESSFUL AGE
batch-job 1 1 2m
~/kubernetes/kubernetes-in-action/Chapter04 $ kub get po
NAME READY STATUS RESTARTS AGE
batch-job-6xrr7 0/1 Completed 0 2m
mysql-9wwzt 1/1 Running 0 23h
myweb-99lfw 1/1 Running 0 23h