• 【Linux】kubernetes - kubectl


    kubectl资源管理方式

    命令式对象管理

    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下的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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

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

    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 # 容器所使用的镜像
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2) 创建资源

    kubectl create -f nginxpod.yaml
    查看
    kubectl get ns dev
    kubectl get pods -n dev
    删除资源
    kubectl delete -f nginpod.yaml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

    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查找
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Deployment Pod控制器

    命令式管理

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    命令式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 # 查看
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

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

    命令式管理

    # 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端口号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    命令式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	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    整理了27个Python人工智能库,建议收藏!
    《Effective Java》学习笔记 - (3)用私有构造器或者枚举类型强化Singleton属性
    mysql数据库和sql语句
    Ftp连接显示connection refused问题的解决
    智能电网短路故障接地故障模拟柜
    深度强化学习+大模型综述Survey on Large Language Model-Enhanced Reinforcement Learning
    Shell揭秘——程序退出状态码
    mybatis-plus 3.5.2 自动生成代码
    企业大语言模型智能问答的底层基础数据知识库如何搭建?
    大家都能看得懂的源码 - 那些关于DOM的常见Hook封装(一)
  • 原文地址:https://blog.csdn.net/qq_45249685/article/details/126081459