yujin2010good
作者yujin2010good·2019-06-06 11:31
系统工程师·大型零售巨头

Kubernetes入门学习之命令总结

字数 5170阅读 1026评论 0赞 3

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 <namespace> -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 <node-name>
kubectl describe pods <pod-name> -n <namespace>
kubectl describe pods <rc-name>
kubectl describe svc nginx
kubectl describe pods nginx-ingress-controller-797b884cbc-whphv -n ingress-nginx

3、查看log
kubectl logs <pod-name>
kubectl logs -f <pod-name> -c <container-name> (相当于tail -f 命令)

4、格式化输出
显示Pod的更多信息
kubectl get pods -n <namespace> -o wide
以yaml格式显示
kubectl get pods -n <namespace> -o yaml
以自定义列明显示Pod信息
kubectl get pod <pod-name> -o =custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
基于文件的自定义列名输出
kubectl get pods <pod-name> -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 <filename>
kubectl delete pods,services -l name=<label-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删除一个
生产中标签最好使用复杂条件,不然容易冲突了。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广