$ kubectl api-versions
$ kubectl --help
$ kubectl create --help
$ kubectl create ns dev
$ kubectl get ns
$ kubectl delete ns test
$ kubectl get pod --all-namespaces
$ kubectl get nodes
$ kubectl describe node my-node
$ kubectl cluster-info
$ kubectl cluster-info dump
$ kubectl get node --show-labels
$ kubectl get pods --all-namespaces
$ kubectl get deployment my-dep --watch
$ kubectl get all
$ kubectl get pod my-pod -o yaml
$ kubectl get service nginx -o yaml
$ kubectl edit service nginx
$ kubectl get pod my-pod -l app=nginx
$ kubectl describe pod my-pod
$ kubectl descibe deploy my-deployment
$ kubectl cordon node-name
$ kuebctl uncordon node-name
$ kubectl drain node-name
$ kubectl scale deployment my-deployment --replicas 5
$ kubectl autoscale deployment foo --min=2 --max=10
$ kubectl autoscale rc foo --max=5 --cpu-percent=80
$ kubectl logs my-pod
$ kubectl logs -f my-pod (常用这种)
$ kubectl attach my-pod
$ kubectl get pod
$ kubectl get pod --show-labels
$ kubectl get pods -l app=example
$ kubectl get pod --all-namespaces -o wide
$ kubectl get pod -o wide
$ kubectl get svc
$ kubectl get rs
$ kubectl exec -it pod-name /bin/bash
$ kubectl exec -it pod-name cat /etc/my.cnf
$ kubectl get deployment
$ kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
$ kubectl get pod myappj -o yaml
$ kubectl create deployment nginx --image=nginx -o yaml --dry-run > my-deployment.yaml
解释:
"-o yaml" ——指定我们的yaml文件
"--dry-run" ——不在k8s中执行
">"——重定向到你指定的文件中
$ kubectl get deploy nginx -o yaml --export > my-deploy2.yaml
解释:
"-o yaml"——指定yaml文件
"--export"——输出
">"——重定向到你指定的文件中
?
$ kubectl run http --image=mysql:5.7 --replicas=10 --dry-run -ncka -o yaml
$ kubectl run nginx-1 --image=nginx --port=80 --replicas=3 --dry-run -o yaml> test.yaml
$ kubectl create deployment http --image=http --dry-run -o yaml > web.yaml
$ kubectl scale --replicas=3 -f foo.yaml
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz
?使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
$ kubectl autoscale deployment foo --min=2 --max=10
$ kubectl autoscale rc foo --max=5 --cpu-percent=80
$ kubectl label pods foo unhealthy=true
$ kubectl label --overwrite pods foo status=unhealthy
$ kubectl cp pod-name:/etc/hosts /tmp
#可能会报错:command terminated with exit code 126 ,因为pod 缺少tar命令,需要进入pod安装
pod中有可能无法yum ,需要配置yum源
$ cat > /etc/yum.repos.d/CentOS-Base.repo << EOF
[base]
name=centos7
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
EOF$ yum install -y tar
退出pod,在执行拷贝
$ kubectl cp /etc/hosts/ pod-name:/etc/hosts/
1)Pending:Pod创建已经提交给k8s,但是因为某种原因不能顺利创建,例如下载镜像慢,调度不成功等。
2)Running:Pod已经绑定到一个节点上了,并且已经创建了所有容器。只是有一个容器正在运行,或者在启动中。
3)Secceeded:Pod中的所有容器都已经成功终止,不能重新启动。
4)Failed: Pod中所有的容器均已经终止,且至少有一个容器已经在故障中终止。
5)Unkown:由于某中原因apiserver无法获取到Pod的状态。通常是由于Master与pod所在的主机失去连接了。
6)CrashLoopBackOff :容器消亡了
7)ImagePullBackOff : 镜像下载失败,或者镜像不存在
8)terminating :正在删除中
$ kubectl api-versions
Kind apiVersion
CertificateSigningRequest certificates.k8s.io/v1beta1
ClusterRoleBinding rbac.authorization.k8s.io/v1
ClusterRole rbac.authorization.k8s.io/v1
ComponentStatus v1
ConfigMap v1
ControllerRevision apps/v1
CronJob batch/v1beta1
DaemonSet extensions/v1beta1
Deployment extensions/v1beta1
Endpoints v1
Event v1
HorizontalPodAutoscaler autoscaling/v1
Ingress extensions/v1beta1
Job batch/v1
LimitRange v1
Namespace v1
NetworkPolicy extensions/v1beta1
Node v1
PersistentVolumeClaim v1
PersistentVolume v1
PodDisruptionBudget policy/v1beta1
Pod v1
PodSecurityPolicy extensions/v1beta1
PodTemplate v1
ReplicaSet extensions/v1beta1
ReplicationController v1
ResourceQuota v1
RoleBinding rbac.authorization.k8s.io/v1
Role rbac.authorization.k8s.io/v1
Secret v1
ServiceAccount v1
Service v1
StatefulSet apps/v1
ReplicaSet用于确保其管控的Pod对象副本数满足期望的数值,它能实现以下功能:
确保Pod的资源数量精确反应期望值
确保Pod健康运行
弹性伸缩
查看Pod资源变动的相关事件:
kubectl descibe replicasets/re-example
基于ReplicaSet之上,可为Pod和ReplicaSet资源提供声明式更新,它具有以下特性:
事件和状态查看:可以查看Deployment对象升级的详细进度和状态
回滚:升级操作完成后发现问题时,支持将应用返回到指定的历史版本中
版本记录:对Deployment 对象的每一次操作都予以保存
暂停和启动:每一次升级,都可以随时暂停和启动
多种自动更新方案:Recreate重建更新、RollingUpdate滚动更新
Pod对象的命名以应用名-ReplicaSet控制器-随机五位字符的方式
DaemonSet 是Pod控制器的有一种实现,用于在集群中的全部节点上同时运行一份指定的Pod资源副本,后续新加入集群的工作节点也会自动创建一个相关的Pod对象,当集群移除节点时,此类Pod对象也会被自动回收
DaemonSet 通常运行那些执行系统级操作任务的应用,具体应用场景如下:
运行集群存储的守护进程,如各个节点上运行ceph、glusterd
各个节点上运行日志收集守护进程,如logstash、fluentd
各个节点上运行监控系统的代理守护进程,如Prometheus Node Exporter、Datadog agent
只有必须将Pod对象运行于固定的几个节点并且需要先于其他Pod启动时,才有必要使用DaemonSet 控制器,否则就应该使用Deployment控制器
Job控制器用于配置Pod对象运行一次性任务,容器中的进程在正常运行借宿后不会进行重启,而是将Pod对象置于“Completed”状态
周期性任务作业计划,控制其运行的时间点及重复运行的方式
原文:https://blog.51cto.com/chengdumeiyouni/2869923