【云原生之k8s】K8s 管理工具 kubectl 详解(一)
k8s命令
·
文章目录
一、陈述式管理
1、陈述式资源管理方法
- 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
- 2.kubectl 是官方的 CLI 命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
- 3.kubectl 的命令大全
kubectl --help - 4.k8s官方中文文档:http://docs.kubernetes.org.cn/683.html
- 5.对资源的增、删、查操作比较容易,但对改的操作就不容易了
2、k8s相关信息查看
2.1 查看版本信息
kubectl version
2.2 查看节点信息
kubectl get nodes
2.3 查看资源对象简写
kubectl api-resources
[root@master ~]# kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v1 true HorizontalPodAutoscaler
cronjobs cj batch/v1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
endpointslices discovery.k8s.io/v1 true EndpointSlice
events ev events.k8s.io/v1 true Event
ingresses ing extensions/v1beta1 true Ingress
flowschemas flowcontrol.apiserver.k8s.io/v1beta1 false FlowSchema
prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta1 false PriorityLevelConfiguration
ingressclasses networking.k8s.io/v1 false IngressClass
ingresses ing networking.k8s.io/v1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses node.k8s.io/v1 false RuntimeClass
poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
roles rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers storage.k8s.io/v1 false CSIDriver
csinodes storage.k8s.io/v1 false CSINode
csistoragecapacities storage.k8s.io/v1beta1 true CSIStorageCapacity
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments storage.k8s.io/v1 false VolumeAttachment
2.4 查看集群信息
kubectl cluster-info
2.5 配置kubectl自动补全
source <(kubectl completion bash)
可通过TAB键实现命令补全,建议将其写入 /etc/profile,一般用的比较少
2.6 查看日志
journalctl -u kubelet -f
2.7 基本信息查看
kubectl get [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命名空间,-o指定输出格式
resource可以是具体资源名称,如"pod nhinx-xxx";也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅展示几种核心资源,并不完整)
- 1.–all-namespaces或-A:表示显示所有命名空间
- 2.–show-labels:显示所有标签
- 3.-l app:仅显示标签为app的资源
- 4.-l app=nginx:仅显示包含app标签,且值为nginx的资源
2.7.1 查看master节点状态
kubectl get componentstatuses
#componentstatues可以缩写成cs
kubectl get cs
2.7.2 查看命名空间
kubectl get namespace
#namespace可以缩写成ns
kubectl get ns
2.8 命名空间操作
2.8.1 查看default命名空间的所有资源
kubectl get all [-n default]
由于deafult为缺省空间,当不指定命名空间时默认查看default命名空间
2.8.2 创建命名空间
kubectl create ns yzq
2.8.3 删除命名空间
kubectl delete ns yzq
2.9 deployment/pod操作
2.9.1 在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx-test)
kubectl create deployment nginx-test --image=nginx -n kube-public
kubectl get pod -n kube-public
#查看命名空间为kube-public的pod
看到状态为running,就是创建完成并成功启动了
2.9.2 描述某个资源的详细信息
kubectl describe deployment nginx-test -n kube-public
kubectl describe pod nginx-test -n kube-public
2.9.3 查看命名空间kube-public中pod信息
kubectl get pods -n kube-public
2.9.4 登录容器
kubectl exec 可以跨主机登录容器,docker exec 只能在容器所在主机登录
kubectl exec -it nginx-test-795d659f45-wl9b7 bash -n kube-public
2.9.5 删除(重启)pod资源
由于存在 deployment/rc 之类的副本控制器,删除 pod 也会重新拉起来
kubectl delete pod nginx-test-795d659f45-8lqgv -n kube-public
kubectl get pod -n kube-public
2.9.6 若无法删除,总是处于terminate状态,则要强行删除pod
kubectl delete pod [] -n [] --force --grace-period=0
grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod
2.9.7 扩缩容
2.9.7.1 扩容
kubectl scale deployment nginx-test --replicas=3 -n kube-public
2.9.7.2 缩容
kubectl scale deployment nginx-test --replicas=1 -n kube-public
#2.9.8 删除副本控制器
kubectl delete deployment nginx-test -n kube-public
2.10 增加/删除label
2.10.1 增加label
kubectl label deploy nginx version=nginx1.14
2.10.2 删除label
kubectl label deploy nginx version-
二、声明式管理
1. 声明式管理方法
- 1.适合于对资源的修改操作
- 2.声明式资源管理方法依赖于资源配置清明文件对资源进行管理
- 3.资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
- 4.对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里
- 5.语法格式:kubectl create/apply/delete -f -o yaml
2、查看资源配置清单
kubectl get deploy/nginx -o yaml
kubectl get service nginx -o yaml
3. 解释资源配置清单
kubectl explain deployment.metadata
kubectl explain service.metadata
4、修改资源配置清单并应用
4.1 离线修改
4.1.1 修改yaml文件
修改yaml文件:并用kubectl apply -f xxxx.yaml文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源
kubectl get service nginx-service -o yaml > nginx-svc.yaml
4.1.2 删除资源
kubectl delete -f nginx-svc.yaml
4.1.3 新建资源
kubectl apply -f nginx-svc.yaml
4.1.4 查看service资源
kubectl get svc
4.2 在线修改
直接使用kubectl edit service nginx-service在线编辑配置资源清单并保存退出即时生效(如port: 888)
PS:此修改方式不会对yaml文件内容修改
kubectl edit service nginx-service
查看service资源
kubectl get svc
5.1 陈述式删除
kubectl delete service nginx
5.2 声明式删除
kubectl delete -f nginx-svc.yaml
更多推荐
已为社区贡献7条内容
所有评论(0)