K8s基本操作命令
一、namespace操作
1)列出集群中所有API组名/版本号:
kubectl api-versions
输出:
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v12)列出集群名称空间:
kubectl get namespaces
输出结果:
3)创建新的名称空间:
kubectl create namespace new-space-name
以上namespace均可以简写成ns,如:kubectl create ns new-space-name
4)列出集群内所有名称空间下所有pod:
kubectl get pod --all-namespaces
二、Pod操作
1)根据配置清单创建pod:
kubectl apply -f new-pod.yaml
2)删除pod:
kubectl delete pods pod-name
3)查看pod:
kubectl get pods
4)通过镜像文件直接创建pod和无状态应用:
5)查看一下对应的pod和无状态应用:
访问这个服务,首先查看一下它的ip地址,可以看到它被部署到哪个节点上去(这里被部署到36工作节点上),使用命令格式:
kubectl get pods -o wide
6)查看pod的配置清单
7)查看pod的label
kubectl get pods --show-labels
7)查看指定名称空间下pod的资源使用情况
kubectl top pods -n [namespaces]
例如:
对指定pod资源状态自动刷新:
watch 'kubectl top pods -n momtest r-vqnc2'
8)查看每个节点主机资源使用情况
kubectl top node
三、Service操作
1)创建service
kubectl create service clusterip test1 --tcp=80
这里要注意,如果需要pod自动关联这个service,service的名字需要和pod一致。
查看这个创建的service:
查看service相关详细信息:
这里看到pod test1已经作为这个service的Endpoints了。
从同一集群的其他pod(用kubectl exec -it pod_name -- /bin/sh进入)访问这个service,注意地址结构:[service name].[namespace].svc.[cluster domain]也可以使用这个service的ip地址访问:10.102.176.227
2)扩展/缩小service下的pod个数
例如,把test1的副本数量扩展/缩少到三个(用同一命令指定数量即可):
kubectl scale deployment/test1 --replicas=3
可以看到在三个工作节点上会自动生成另外两个一样的pod。
3)service的iptable规则
集群每创建一个新的pod,都会在节点宿主机的iptables上创建对应的新规则,例如:
完整的iptables规则如下图:
4)service的ipvs规则
对于使用ipvs的集群,上述规则在ipvs下显示如下,对比iptables,ipvs更为简单和高效:(通过修改kube-proxy的configMap里的mode字段为“ipvs”来配置)
工作节点上安装apt install ipvsadm
四、ConfigMap操作
1)列出configmap资源(kebu-system名称空间下)
2)修改kube-proxy
kubectl edit cm kube-proxy -n kube-system
-n kube-system为指定名称空间。
修改完kube-proxy,需要删除并重新生成kube-system下的对应6个kube-proxy的pod(由于这里测试用的主节点+工作节点有6个)。
实现批量删除,通过labels:
看到这6个pod都具有同一个label叫k8s-app=kube-proxy, 所以如2-2的操作,批量删除加入label后的指令是:
kubectl delete pods -l k8s-app=kube-proxy -n kube-system
kube-proxy的pod被删除后重新根据修改后的配置清单生成新的pod。
五、deployments/rc/rs删除操作
上面测试用的两个pod,如果直接使用kubectl delete pod来删除,过一会又会生成新的pod,原因是对应的pod在创建时,kubernetes创建了对应的deployment和rs(副本集replicasets)来监控pod的生命周期。所以,要删除这两个pod,首先要删除对应的deployment/rc/rs。
检查是否创建了deployments任务:kubectl get deployments
检查是否创建了副本控制器ReplicationController:kubectl get rc
检查死否创建了副本集replicasets:kubectl get rs
删除对应的对应的deployment:kubectl delete deployment test1
Last updated
Was this helpful?