kubernetes指令合集

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

你可能感兴趣的:(kubernetes,kubernetes,docker,容器)