https://blog.csdn.net/qq_45249685/article/details/126081372?spm=1001.2014.3001.5501#2_kubectl_19
kubectl [command] [type] [name] [flages]
***
查看所有pod
kubectl get pods
查看指定ns下的pod
kubectl get pods -n ns_name
查看某个pod
kubectl get pod pod_name -o wide
kubectl get pod pod_name -o json
kubectl get pod pod_name -o yaml
kubectl describe pod pod_name
kubectl describe pod pod_name -n ns_name
查看pod的labels
kubectl get pod -n sock-shop --show-labels
***
查看指定pod下的container
kubectl get pods -n scok-shop -o wide # 查看container name
kubectl describe pods -n sock-shop container_name
删除pod
kubectl delete pods pod_name -n ns_name
# 显示删除成功,但查看会新产生一个
# 关闭pod控制器
kubectl get deployment -n ns_name # 查看控制器
kubectl delete deployment nginx -n ns_name # 删除ngnix控制器
创建命名空间dev
kubectl create ns dev
查看namespace
kubectl get ns
在namespace下运行一个nginx的pod
kubectl run pod --image=nginx --port=80 --namespace=dev
查看新创建的pod
kubectl get pod -n dev -o wide
访问pod
curl pod_ip:pod_port
删除ns
kubectl delete ns dev
查看pod
kubectl get pod -n namespace
查看pod下container
kubectl get pods podName -o jsonpath={.spec.containers[*].name} -n namespace
格式
kubectl exec -it podName -c containerName -n namespace -- shell comand
如 创建目录
kubectl exec -it podName -c containerName -n namespace -- mkdir -p /usr/local/spark
进入pod中容器
kubectl exec -it podName -c containerName -n namespace -- /bin/sh
kubectl get all -n ns # 可以查看各种文件
不同edit对象打开的文件类型不一样,可以注意一下
kubectl edit pod pdName -n ns
kubectl edit daemonset podName -n ns
kubectl edit deploy prometheus-deployment(不是name) -n monitoring
vi nginxpod.yaml
# 创建名为dev的namespace
apiVersion: v1
kind: Namespace
metadata:
name:dev
---
# 创建名为nginxpod,在dev命名空间下的pod
apiVersion: v1
kind: Pod
metadata;
name: nginxpod
namespace: dev
labels:
version: "1.0"
env: "test"
spec:
containers:
# pod中容器的名字
- name: nginx-containers
image: nginx:1.17.1 # 容器所使用的镜像
kubectl create -f nginxpod.yaml
查看
kubectl get ns dev
kubectl get pods -n dev
删除资源
kubectl delete -f nginpod.yaml
# apply运行第一次创建资源,再次运行尝试按.yaml文件更新
# create创建后再次运行则报错
kubectl apply -f nginxpod.yaml
kubectl label pod nginx -n dev version=1.0 # 给pod打标签
kubectl label pod nginx -n dev version- # 删除标签
kubectl get pod -n dev --show-labels # 查看
kubectl label pod nginx -n dev version=2.0 --overwrite # 更新
kubectl get pods -l "version!=2.0" -n dev --show-labels # 指定label查找
# run默认使用控制器运行pod
# 创建deploymen.apps/nginx控制器,--replicas=3 建立三个pod
# pod有label run=nginx
kubectl run nginx --image=nginx:1.17.1 --port=80 --replicas=3 -namespace=dev
kubectl get deployment,pods -n dev # 查看创建结果
kubectl describe deploy nginx -n dev # 查看deployment详细
kubectl delete deploy nginx -n dev
vim deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata;
name: nginxpod
namespace: dev
spec: # pod
replicas: 3
selector: # 控制器
matchlabels:
run: nginx
template;
metadata:
labels:
run: nginx
spec:
containers:
# pod中容器的名字
- name: nginx-containers
image: nginx:1.17.1
ports:
- containerPort: 80
protocol: TCP
kubectl create -f deploy-nginx.yaml # 创建
kubectl get deployment,pods -n dev # 查看
# deployment nginx创建了pod
# 暴露service ,名称svc-nginx1,类型ClusterIP
# service端口号80 访问service时访问端口号为80的pod
kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
kubectl get service -n dev # 查看(clusterip 分配端口)
curl clusterip:port
kubectl delete svc svc-nginx1 -n dev # 删除
clusterip 只能在集群内部(部署k8s)访问
NodePort 集群外部可访问 浏览器访问 http://service所在主机ip:service端口号
apiVersion: apps/v1
kind: Service
metadata;
name: svc-nginx
namespace: dev
spec:
clusterIP: 10.109.179.231 # 不指定则随机分配
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: ClusterIP
kubectl create -f svc-nginx.yaml