Kubernetes入门学习-二十一-命令总结

最近学习k8s遇到很多问题,建了一个qq群:153144292,交流devops、k8s、docker等

k8s常用命令
查看帮助
[root@master ~]# kubectl --help
查看版本:
[root@master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:08:12Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:00:57Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
查看集群信息
[root@master ~]# kubectl cluster-info
Kubernetes master is running at https://10.249.6.100:6443
Heapster is running at https://10.249.6.100:6443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://10.249.6.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
monitoring-grafana is running at https://10.249.6.100:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
monitoring-influxdb is running at https://10.249.6.100:6443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy

1、查看资源对象
kubectl get nodes  <-o wide>
kubectl get pods -n -o wide   查看pod,并且分布在那个节点
kubectl get svc 
kubectl get ingress
kubectl get pod --all-namespaces    查看所有namespace下的pod资源
kubectl get rs -o wide
kubectl get pods -l app=myapp -w 
kubectl get ds -n kube-system
kubectl get pod -n ingress-nginx -w

2、描述资源对象
kubectl describe nodes
kubectl describe pods -n  
kubectl describe pods
kubectl describe svc nginx
kubectl describe pods nginx-ingress-controller-797b884cbc-whphv -n ingress-nginx

3、查看log
kubectl logs
kubectl logs -f -c (相当于tail -f 命令)

4、格式化输出
显示Pod的更多信息
kubectl get pods -n -o wide
以yaml格式显示
kubectl get pods -n -o yaml
以自定义列明显示Pod信息
kubectl get pod -o =custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
基于文件的自定义列名输出
kubectl get pods -o=custom-columns-file=template.txt
输出结果排序
kubectl get pods --sort-by=.metadata.name

5、创建资源对象
kubectl create -f xxx.yaml(文件)
kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete)
kubectl apply -f xxx.yaml (创建+更新,可以重复使用)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml  在线
命令直接创建
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

6、修改资源对象
kubectl replace -f xxx.yaml
kubectl patch pod httpd-5f955cf6d5-4htlh -p '{"metadata":{"labels":{"app":"nginx-3"}}}'
kubectl edit pod httpd-5f955cf6d5-4htlh  
kubectl edit rs myapp

7、删除资源对象
kubectl delete -f
kubectl delete pods,services -l name=
kubectl delete svc nginx-deploy
kubectl delete deployment wolf
kubectl delete pods --all(生产环境慎用)
kubectl get pods -o yaml | kubectl delete -f -  删除全部

8、运行镜像(Run a particular image on the cluster)
kubectl run --help
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1 --dry-run=true
kubectl run nginx --image=nginx:1.14-alpine --port=80 --replicas=2
kubectl run client --image=busybox --replicas=1 -it --restart=Never
kubectl run wolf --image=busybox --replicas=2

8、动态伸缩
动态伸缩
kubectl scale --replicas=5 deployment nginx
kubectl scale --replicas=3 deployment nginx

9、滚动升级(或降级)
滚动升级
kubectl set image deployment nginx nginx=nginx  这个环境没准备容器,感受一下过程
kubectl rollout status deployment nginx 

默认回滚到上一个版本
kubectl rollout undo deployment nginx
kubectl rollout history deploy  myapp-deploy
kubectl rollout history deployment/myapp-deploy --revision=2

带暂停
kubectl rollout resume deploy  myapp-deploy

更新deployment的v3版本,并配置暂停deployment
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout 

打补丁
kubectl patch deployment myapp-deploy -p '{"spec":{"replicas":5}}'
kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}'

10、查看资源定义(编写yaml文件常用)
下面的命令查看资源定义
kubectl explain pods
kubectl explain pods.metadata
kubectl explain pods.spec
kubectl explain pods.spec.containers
kubectl explain pods.spec.containers.livenessProbe

命令行查看ReplicaSet清单定义规则
kubectl explain rs
kubectl explain rs.spec
kubectl explain rs.spec.template

kubectl explain deployment
kubectl explain deployment.spec.
kubectl explain deployment.spec.strategy
kubectl explain deployment.spec.strategy.rollingUpdate

kubectl explain ds
kubectl explain ds.spec  必须字段
kubectl explain ds.spec.template.spec

清单创建service资源
kubectl explain svc
kubectl explain svc.spec
kubectl explain svc.spec.selector


kubectl explain pod.spec.volumes
kubectl explain pod.spec.volumes.emptyDir  #查看emptyDir存储定义
kubectl explain pod.spec.containers
kubectl explain pod.spec.containers.volumeMounts #查看容器挂载方式


11、手动进入容器
kubectl exec -it liveness-httpget-pod -- /bin/sh
kubectl exec -it redis-5b5d6fbbbd-v82pw -- /bin/sh

12、打标签
kubectl get pods --show-labels    标签为app=myapp,release=canary的两个myapp
kubectl label pods readiness-httpget-pod release=canary
kubectl label pods readiness-httpget-pod app=myapp
kubectl get pods --show-labels    这里发现readiness-httpget-pod 他已经满足上面标签选择器的条件,上面myapp删除一个
生产中标签最好使用复杂条件,不然容易冲突了

 
 

你可能感兴趣的:(devops)