Pod
列出所有节点
kubectl get nodes
查看节点信息
kubectl describe node gke-kubia-85f6-node-0rrx
运行镜像,创建一个ReplicationController
kubectl run kubia --image=kuksa/kubia --port=8080 --generator=run/v1
--image=kuksa/kubia 指定要运行的镜像
--port=8080 告诉k8s应用正在监听8080端口
列出pod
kubectl get pods
创建一个服务对象,告知k8s对外暴露之前创建的ReplicationController
kubectl expose rc kubia --type=LoadBalancer --name kubia-http
通常的服务,例如ClusterIP服务,只能通过集群内部访问,但是LoadBalancer类型的服务,可以创建一个负载均衡,通过负载均衡的公共IP访问pod
列出服务
kubectl get services
kubectl get svc
EXTERNAL-IP为外部IP,可供访问
列出replicationcontroller
kubectl get replicationcontrollers
增加期望的副本数量
kubectl scale rc kubia --replicas=3
列出pod详细信息
kubectl get pods -o wide
查看pod的其它细节
kubectl get pod kubia-hczji(pod主机名)
使用dashboard查看面板
kubectl cluster-info | grep dashboard
http://kubemetes.io/ docs reference
yaml
查看pod的yaml
kubectl get pod kubia-aajis -o yaml
pod定义由这么几个部分组成:首先是YAML中使用的kubernetes API版本和YAML描述的资源类型;其次是几乎在所有Kubernetes资源中都可以找到的三大重要部分:
* matadata包括名称、命名空间、标签和关于该容器的其他信息
* spec包含pod内容的实际说明,例如pod的容器、卷和其他数据
* status包含运行中的pod的当前信息,例如pod所处的条件、每个容器的描述和状态,以及内部IP和其他基本信息。
为pod创建一个简单的YAML描述文件
apiVersion: v1
kind: Pod
metadata:
name: kubia-mufd
spec:
containers:
- image:luksa/kubia
name:kubia
ports:
- containerPort:8080
protocol:TCP
使用kubectl explain来发现可能的API对象字段
kubectl explain pods
kubectl explain pod.spec
使用kubectl create 来创建pod
kubectl create -f kubia-maunal.yaml
获取pod的的完整定义
kubectl get po kubia-manual -o yaml
kubectl get po kubia-manual -o json
使用kubectl logs命令获取pod日志
kubectl logs kubia-manual
获取多容器pod的日志时指定容器名称
kubectl logs kubia-manual -c kubia(容器名称)
如果想要在不通过service的情况下与某个特定的pod进行通信,k8s允许我们配置端口转发到该Pod
kubectl port-forward kubia-manual 8888:8080
标签
查看标签
kubectl get po --show-labels
查看具体的标签
kubectl get po -L creation_method,env(标签名称)
pod没有标签,给他添加新的标签
kubectl label po kubia-manual creation_method=manual
pod有标签,需要更改
kubectl label po kuia-manual env=debug --overwrite
使用标签选择器列出pod
kubectl get po -l creation_method=manual
kubectl get po -l env
kubectl get po -l '!env'
kubectl get po -l env in (debug,create)
kubectl get po -l env noti (debug,create)
kubectl get po -l env=debug,creation_method=manual
使用标签分类工作节点
kubectl label node k8s-master gpu=true
将pod调度导特定节点,使用节点选择器
apiVersion:V1
kind:Pod
matadata:
name:kubia-test
spec:
nodeSelector: //节点选择器
gpu:"true"
containers:
-image:luska/kubia
name:kubia
添加和修改注解
kubectl annotate pod kubia-manual mycompany.com/someannotation="foo bar"
命名空间
列出命名空间
kubectl get ns
获取指定命名空间的pod
kubectl get po --namespace kube-system
使用yaml文件创建命名空间
apiVersion:V1
kind:namespace
matadata:
name:cutom
使用命令创建命名空间
kubectl create namespace custom
在使用资源时,指定命名空间
kubectl create -f kubia-maunual.yaml -n custom
删除pod
kubectl delete po kubia-manual
使用标签选择器删除
kubectl delete po -l creation_method=manual
通过删除整个命名空间删除
kubectl delete ns custom
删除命名空间所有pod,保留命名空间
kubectl delete po --all
删除命名空间中的所有资源
kubectl delete all --all
yaml文件里添加存活探针
spec:
containers:
-image:kubia
name:kubia
livenessProbe:
httpGet:
path:/
port:8080
RESTARTS表示重启次数
查看重启之前容器的日志
kubectl logs mypod --previous
定义探针时还可以添加属性
livenessProbe:
httpGet:
path:/
port:8080
initialDelaySeconds:15 k8s会在第一次探测前等待15秒
apiVersion: vl
kind: Replica七ioncontroller
metada七a:
name: kubia
spec:
replicas: 3
selector: //标签选择器
app: kubia
template: //pod模板
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: luksa/kubia
ports:
- containerPor七: 8080
ReplicationController
编辑replicationController
kubectl edit rc kubia
扩缩容
kubectl scale rc kubia --replicas=3
删除replicationController,但是保留pod
kubectl delete rc --cascade=false
apiVersion: apps/vlbeta2
kind: ReplicaSet
metadata:
name: kubia
spec:
replicas: 3
selector:
matchLabels:
app: kubia
template:
metada七a:
labels:
app: kubia
spec:
containers:
- name: kubia
image:luksa/kubia
标签的值必须是kubia
selector:
matchExpressions:
- key: app
operator: In
values.
- kubia
DaemonSet
创建一个DaemonSet
apiVersion: apps/vlbeta2
kind: DaernonSet
metadata:
name: ssd-monitor
spec:
selector:
matchLabels:
app:ssd-moitor
template:
metadata:
labels:
app:ssd-moitor
spec:
nodeSelector: //选择节点
disk: ssd
containers:
- name: main
image: luksa/ssd-monitor
查看DaemonSet
kubectl get ds
Job
创建Job
apiVersion: batch/vl
kind: Job
metadata:
name: ba七ch-job
spec:
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure //重启策略默认为Always,需要修改
containers:
- name: main
image: luksa/ba七ch-job
获取Job
kubectl get jobs
显示已完成的pod
kubectl get po -a
顺序执行同一个任务5次
apiVersion: batch/vl
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5 //顺序运行5个pod
并行运行Job pod
apiVersion: batch/vl
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5
parallelism: 2 //最多两个pod可以并行运行
CronJob
创建一个CronJob
创建服务
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
-port:80
targetPort:8080
selector:
app:kubia
//创建了一个名叫kubia的服务,它将在端口80接收请求并将连接路由到具有标签选择器是app=kubia的pod的8080端口上
在运行的容器中远程执行命令
kubectl exec kubia-34dfs --curl -a http://10.333.423.424
//双横杠(--)表示在两个横杠之后的内容是指在pod内部需要执行的命令
设置会话亲和性,使得来自同一个clientIP的所有请求转发至同一个pod上
apiVersion:v1
kind:Service
spec:
sessionAffinity:ClientIP
一个服务暴露多个端口
apiVersion:v1
kind:Service
spec:
ports:
-name:http
port:80
targetPort:8080
-name:https
port:443
targetPort:8443
selector:
app:kubia
通过环境变量发现服务
kubectl exec kubias-dfwef env
KUBIA_SERVICE_HOST=10.111.249.153 服务的集群IP
KUBIA_SERVICE_PORT=80 服务端口
在pod容器中运行shell
kubectl exec -it kubia-sdfdf bash
获取endpoint信息
kubectl get endpoints kubia