1.所有pod都在同一个共享网络地址空间中,每个pod都可以直接访问其他pod的IP进行访问

2.一个pod中的容器运行于相同的Network命名空间,共享相同的IP地址和端口,同一pod中的容器运行的多个进行要注意不能绑定到相同的端口

3.每个pod都有独立的IP和端口

4.

kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1 replicationcontroller "kubia ” created

创建loadbalancer类型服务

kubectl expose re kubia --type=LoadBalancer --name kubia-http service ”kubia - http " exposed

kubectl get #列出所有类型资源

kubectl get pods

kubectl get pods -o wide

kubectl describ pod kubia-hczji #获取pod的详细信息

kubectl get services/svc

kubectl get replicationcontrollers/rc

kubectl scale rc kubia --replicas=3 #名为kubia的rc增加副本数到3个

#使用yaml文件创建pod

kuberctl create -f kubia-manual.yaml #从yaml文件创建pod

kubectl get po kubia-manual -o yaml/json #查看pod的yaml或json信息

kubectl get po --show-labels #获取pod标签

kubectl get po -L label01,label02 #只获取特定标签内容

kuberctl logs kubia-manual #查看pod日志

kuberctl logs kubia-manual -c kubia #获取kubia-manual pod中kubia容器的日志

每天或者每次日志文件达到10MB大小时, 容器日志都会自动轮替。kubectl logs命令仅显示最后一次轮替后的日志条目

kubectl logs mypod --previours #查看前一个容器的日志

kubectrl port-forward kubia-manual 8888:8080 #将机器的本地端口8888转发到pod的8080端口,访问:curl localhost:8888

pod.yaml内容:

apiVersion: vl

kind: Pod

metadata:

name: kubia-manual-v2

labels: #设置pod的标签

creation method: manual

env: prod

spec:

containers:

- image: luksa/kubia

name: kubia

ports:

- containerPort: 8080

protocol: TCP

kubectl label po kubia-manual creation_method=manual #为pod kubia-manual添加creation_method=manual 标签

kubectl label po kubia-manual-v2 env=debug --overwrite #修改env=test为env=debug

kubectl get po -l creation_method=manual #或者 !=、env in 、env notin

kubectl get po -l env #列出含有env标签的所有pod

kubectl get po -l ‘!env’ #列出不含有env标签的所有pod

kubectl get po -l app=pc,rel=beat #标签选择器使用多个条件

 

命名空间:

具有相同名称的pod可以位于不同的namespace中

kubectl get ns

kubectl get po --namespace(或-n) kube-system

kubectl create namespace custom-namespace #新建命名空间

kubectl create -f kubia-manual.yaml -n custom-namespace #在命名空间内新建pod

如果不指定命名空间, kubect 将在当前上下文中配置的默认命名空间中执行操作 。而当前上下文的命名空间和当前上下文本身都可以通过 kubectl config 命令进行更改

kubectl delete po pod1 pod2 #删除多个pod

kubectl delete po -l creation_method=manual #通过标签选择器删除pod

RC存活探针:

spec:

containers:

- image: luksa/kubia-unhealthy

name: kubia

livenessProbe: #在8080端口上执行http get请求,检查容器是否健康

httpGet:

path: /

port: 8080

initialDelaySeconds: 20 #容器启动后等待20s后再探测

 

kubectl scale rc kubia --replicas=10 #更改rc副本为10

kubectl edit rc kubia #编辑rc kubia yaml文件,修改spec.replicas=10也可以

kubectl delete rc kubia --cascade=false #删除rc,不影响其管理的pod运行。删除rc后,这些pod将独立运行,不再受管理,但可以使用合适的标签选择器创建新的rc,重新进行管理

kubectl get rs

kubectl describe rs

rs.yaml文件编写:

selector:

matchExpressions: #此选择器要求该pod包含名为“app”的标签,值必须是 kubia

- key: app

operator: In

values:

- kubia

• In : Label的值 必须与其中 一个指定的values 匹配。

• Notln : Label的值与任何指定的values 不匹配。

• Exists : pod 必须包含一个指定名称的标签(值不重要)。使用此运算符时,不应指定 values字段。

• DoesNotExist : pod不得包含有指定名称的标签。values属性不得指定 。

如果你 指定了多个表达式,则所有这些表达式都必须为true才能使选择器与pod匹配。如果同时指定matchLabels和matchExpressions, 则所有标签都必须匹配,并且所有表达式必须计算为true以使该pod与选择器匹配

DaemonSet可以指定pod在每个节点(或特定节点)上运行

Job适合用任务成功完成后退出,而不是永久运行

Job可以配置为pod串行运行5次,或10个pod并行运行

Job运行时间也可以进行限制

CronJob支持任务计划方式运行pod,CronJob资源会创建Job资源,然后job创建pod