k8s 常用的操作
-
查找资源 kubectl get: 获取所有的资源,包括node、namespace、pod 、service、deployment等,可以展示一个或者多个资源。
-
创建资源 kubectl create :Kubernetes 的清单文件可以用 json 或 yaml 定义。
-
更新资源 kubectl apply :将配置更改应用于Kubernetes资源对象,适合进行部分更新。
-
删除资源 kubectl delete:删除对应的资源。
nodes 节点:
-
查看nodes节点:
kubectl get nodes
namespace( 命名空间):
-
查看所有namespace(命名空间 ):
kubectl get ns
Deployment:
-
列出所有命名空间中Deployment资源 :
kubectl get deployments --all-namespaces
-
列出指定命名空间的 Deployment资源 :
kubectl get deployments --namespace 命名空间名称
-
列出指定 deployment:
比如 deployment 名称为:my-deploy,如下:
kubectl get deployment deployment 名称 --namespace 命名空间名称
如果不指定 命名空间名称,就会视为 default(默认的) 命名空间。如果命名空间搞错了,在命名空间里没有这个 deployment ,会提示:
Error from server (NotFound): "" not found
- 用deployment创建一个pod:
首先编辑 deployment-demo.yml ,
apiVersion: apps/v1 # deployment对应的api版本
kind: Deployment # 创建的资源是deployment
metadata:
name: myDeploy-v1 # deployment的名字
spec:
replicas: 2 # deployment管理的pod副本数
selector: # 标签选择器
matchLabels: # 筛选定义的标签需要跟template.metadata.labels定义的标签一致
font: myDeploy
version: v1
template:
metadata:
labels: # Pod具有的标签
font: myDeploy
version: v1
spec: #定义容器的属性
containers:
- name: myDeployment
image: janakiramm/myapp:v1 # 容器使用的镜像
imagePullPolicy: IfNotPresent # 镜像拉取策略
ports:
- containerPort: 80 # 容器里的应用的端口
接着 执行 kubectl apply 命令, kubectl apply 既可以创建资源,也可以动态更新资源:
kubectl apply -f deployment-demo.yml
-
用于查看与特定 Deployment 关联的 Pod 详情:
kubectl describe deployment deployment名称 --namespace 命名空间名称
这个命令会显示 Deployment 的详细状态,包括它创建的 Pod 的信息。
如果不指定 命名空间名称,就会视为 default(默认的) 命名空间。如果命名空间搞错了,在命名空间里没有这个 deployment ,会提示:
Error from server (NotFound): "" not found
Pod 相关的命令:
-
列出所有 命名空间(namespace) 中的所有 pod:
kubectl get pods --all-namespaces
-
列出所有 pod 并显示详细信息:
kubectl get pods -o wide
-
查看某个命名空间(namespace) 中的所有 pod:
比如 查看 namespace 为 kube-system 中的所有 pod,如下:
kubectl get pod -n kube-system
- 创建一个 pod :
yaml
kubectl create -f ./my-pod.yaml
my-pod.yaml 这个文件的格式,简单示例如下:
apiVersion: v1
kind: Pod
metadata:
name: pod-redis
labels:
name: redis
spec:
containers:
- name: pod-redis
image: docker.io/redis
ports:
- containerPort: 80 #容器对外的端口
- k8s 进入 pod:
通过 shell 命令,进行容器。进入容器后,就可以进行ls 、cd ... 之类的 linux 命令了。
kubectl exec -ti pod名称 -n 命名空间 -- /bin/sh
-
输出 pod 的日志:
kubectl logs pod名称
-
输出 pod 中容器的日志(pod 中有多个容器):
kubectl logs pod名称 -c 容器名称
其他:
-
通过yaml文件查询资源:
kubectl get -f xxx.yaml
-
查询资源:
kubectl get resourcequota
-
查询endpoints:
kubectl get endpoints
参考资料:
https://www.cnblogs.com/chaojiyingxiong/p/17150507.html