文章目录
一、基础命令
1.节点
# 查看节点
kubectl get nodes
2.命名空间
命名空间,k8s中用来隔离资源的对象
2.1命令行方式
# 1、查看所有命名空间
kubectl get ns
# 2、查看指定的ns
kubectl get ns ns-name
# 3、指定输出格式 kubectl get ns ns-name -o [格式参数:json、yaml、wide。。]
kubectl get ns ns-name -o yaml
# 4、查看ns详情
kubectl describe ns ns-name
# 5、创建命名空间
kubectl create ns ns-name
# 6、删除命名空间
kubectl delete ns ns-name
2.2yaml方式
# hello.yaml
apiVersion: v1
kind: Namespace
metadata:
name: hello
# 创建hello Namespace
kubectl create -f hello.yaml
# 删除hello Namespace
kubctl delete -f hello.yaml
3.pod
k8s的最小控制单元,程序运行在容器中,而容器则运行在pod中,一个pod可以有1个或多个容器
# 1、创建并运行
kubectl run nginx --image=nginx:latest --port=80 --namespace dev
# 2、查看pod基本信息
kubectl get pod -n dev
# 3、查看pod详细信息
kubectl describe pod nginx -n dev
# 4、查看所有pod
kubectl get pods -A
# 5、访问pod(获取podIp)
kubectl get pods -n dev -o wide
# 6、删除pod
kubectl delete pod nginx -n dev
# 7、查看pod的运行日志
kubectl logs pod-name
4. 标签
它的作用就是在资源上添加标识,用来对它们进行区分和选择。
# 1、为pod资源打标签
kubectl label pod nginx version=1.0 -n dev
# 2、为pod资源更新标签
kubectl label pod nginx version=2.0 -n dev --overwrite pod/nginx labeled
# 3、查看标签
kubectl get pod nginx -n dev --show-labels
# 4、筛选标签
kubectl get pod -n dev -l version=2.0 --show-labels
# 5、删除标签
kubectl label pod nginx version -n dev pod/nginx labeled
4. Controllers
PControllers的作用是控制Pod,使Pod拥有多副本,自愈,扩缩容等能力
在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。
简单介绍4种
- Deployment: 无状态应用部署,比如微服务,提供多副本等功能
- StatefulSet:有状态应用部署,比如redis,提供稳定的存储,网络等功能
- DaemonSet:守护型应用部署,比如日志收集组件,在每个机器都运行一份
- Job/CronJob:定时任务部署,比如垃圾清理组件,可以在指定时间运行
# 1、pod控制器多副本创建pod
kubectl create deployment my-dep --image=nginx --replicas=3
# 2、扩缩容
kubectl scale --replicas=5 deployment/my-dep
# 3、滚动更新
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
kubectl rollout status deployment/my-dep
# 4、版本回退
# 4.1、历史记录
kubectl rollout history deployment/my-dep
# 4.2、查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2
# 4.3、回滚(回到上次)
kubectl rollout undo deployment/my-dep
# 4.4、回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2
5.Service
-
在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。
-
为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到后面的pod服务。
5.1 ClusterIP 集群内部可以访问
# 1、暴露deploy
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
# 2、使用标签检索pod
kubectl get pod -l app=my-dep
# 3、查看service
kubectl get svc
5.2 NodePort 集群外部可以访问
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort
二、进阶命令
1. 生成新令牌
kubeadm token create --print-join-command