【Linux】kubernetes - kubectl

kubectl

  • 1. 安装
  • 2. kubectl资源管理方式
    • 2.1 命令式对象管理
      • 2.1.1 常用命令
      • 2.1.2 进入pod中的contianer
      • 2.1.3 kubectl edit
    • 2.2 命令式对象配置(命令+yaml配置文件)
      • 2.2.1 创建.yaml文件示例nginxpod.yaml
      • 2.2.2 创建资源
    • 2.3 声明式对象配置(apply描述资源最终状态)
  • 2. Label 标签
  • 3. Deployment Pod控制器
    • 3.1 命令式管理
    • 3.2 命令式yaml配置
  • 4. Service 一组同类Pod对外的访问接口
    • 4.1 命令式管理
    • 4.2 命令式yaml配置

1. 安装

https://blog.csdn.net/qq_45249685/article/details/126081372?spm=1001.2014.3001.5501#2_kubectl_19

2. kubectl资源管理方式

2.1 命令式对象管理

2.1.1 常用命令

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

2.1.2 进入pod中的contianer

查看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 

2.1.3 kubectl edit

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

2.2 命令式对象配置(命令+yaml配置文件)

2.2.1 创建.yaml文件示例nginxpod.yaml

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 # 容器所使用的镜像

2.2.2 创建资源

kubectl create -f nginxpod.yaml
查看
kubectl get ns dev
kubectl get pods -n dev
删除资源
kubectl delete -f nginpod.yaml

2.3 声明式对象配置(apply描述资源最终状态)

# apply运行第一次创建资源,再次运行尝试按.yaml文件更新
# create创建后再次运行则报错
kubectl apply -f nginxpod.yaml

2. Label 标签

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查找

3. Deployment Pod控制器

3.1 命令式管理

# 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

3.2 命令式yaml配置

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 # 查看

4. Service 一组同类Pod对外的访问接口

4.1 命令式管理

# 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端口号

4.2 命令式yaml配置

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	

你可能感兴趣的:(Linux,kubernetes,linux,docker)