k8s-基本命令

我崇拜生命中的真诚,喜欢被岁月见证过的友情,感恩生命中的不离不弃的人。

kubectl命令

1、直接通过命令去操作k8s资源

kubectl是k8s集群的命令行工具。基本语法如下

kubectl [command] [type] [name] [flag]
  • command: 资源执行的操作,create get delete

  • type:指定资源类型 pod service deployment

  • name: 指定资源名称

  • flags: 额外可选参数

#查看所有pod
kubectl get pod

#查看所有node
kubectl get node

#查看wangzi 这个pod
kubectl get pod wangzi

#查看王子pod以json/yaml形式展示数据
kubectl get pod wangzi -o json
kubectl get pod wangzi -o yaml

#查看王子pod的详细信息
kubectl get pod wangzi -o wide

#描述资源信息(如果当前pod未启动成功,pullimageerror等就可以使用,查看报错信息)
kubectl describe pod wangzi
#创建一个wangzi的namespace
kubectl create ns wangzi

#查看当前的namespace
kubectl get ns
在这里插入图片描述
k8s在集群启动之后,集群中的组件也是通过pod方式运行的,kube-system是集群本身组件所占用的一些pod
在这里插入图片描述

#运行一个pod,命名空间指定刚创建的wangzi
kubectl run pod --image=nignx -n wangzi
在这里插入图片描述
#查看在wangzi命名空间下的pod
kubectl get pod -n wangzi
在这里插入图片描述#描述pod
kubectl describe pods pod -n wangzi
在这里插入图片描述#删除pod
kubectl delete pods pod -n wangzi
在这里插入图片描述

2、通过命令配置和配置文件去操作资源(增删改查资源)

kubectl create -f nginx.yaml
apiVersion:V1
kind:Namespace
matadata:
	name:wangzi
	
---

apiVersion:V1
kind: Pod
metadata:
	name:wangzi_nginx
	namespace:wangzi
spec:
	containers:
	-name:wangzi_container_nginx
	image:nginx:1.17.1

#创建了两个资源

kubectl create -f wangzi.yaml

#删除资源

kubectl delete -f wangzi.yaml

3、通过apply命令和配置文件操作资源(新增和更新资源)

kubectl apply -f wangzi.yaml

4、其他

删除pod,当前wangzi的pod被删除了,会重新创建一个新的pod

kubectl delete pod wangzi

查看控制器,需要删除对应的控制器,然后就不会自动重新创建了

kubectl get deployment -n wangzi

5、资源的类型

①label

  • 在资源上添加标识,对资源进行区分和选择。
  • 配置
apiVersion:V1
kind: Pod
metadata:
	name:wangzi_nginx
	namespace:wangzi
labels:
	version: "1.0"
	env: "test"
spec:
	containers:
	-name:wangzi_container_nginx
	image:nginx:1.17.1
  • 给wangzi pod 打标签
  kubectl label pod wangzi -n wangzi version=1.0
  • 覆盖之前的label
  kubectl label pod wangzi -n wangzi version=1.0 --overwrite
  • 展示wangzi pod的标签
  kubectl  get pod -n --show-label
  • 通过参数 -l 搜索对应的标签
    在这里插入图片描述
  kubectl get pod -l "pod-template-hash=74774dbd69" -n default --show-labels
  • 删除标签 tier-
  kubectl  label pod wangzi -n wangzi tier-

②deployment

k8s通过控制器来控制pod.

  • 文件配置
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wangzi
spec:
  replicas: 3
  selector:
    matchLabels:
      run: wangzi
  template:
    metadata:
      labels:
        run: wangzi
  • --replicas=3 指定副本数量,维护当前容器的个数
kubectl run nginx --image=nginx:latest --port=80 --replicas=3

③Namespace

  • 主要用来实现资源隔离

④pod

  • pod是K8S集群进行管理的最小单元。一个pod中可以运行一个或则多个容器。

⑤service

pod重建之后ip会随之变化,ip是集群内部可见的虚拟ip,外部无法访问。service可以实现服务发现和负载均衡。service通过标签选择机制与控制器创建的pod关联起来。

  • 创建集群内部可以访问的service
#通过wangzi这个控制器找到对应的pod,暴露该pod 80端口,成功后会产生一个service的ClusterIP,这个地址在生命周期内不会变动 
- kubectl expose deployment wangzi --name=wangi1 --type=ClusterIP --port=80 --target-port=80 -n wangzi
  • 创建集群外部可以访问的service
- kubectl expose deployment wangzi --name=wangi1 --type=Nodeport--port=80 --target-port=80 -n wangzi

创建成功之后 PORT一栏显示如下:80:19998/TCP
可以通过当前主机的ip:19998 通过ClusterIP 转发到80端口

  • 配置方式
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: wangzi
    release: heihei

Pod 资源清单:

  • 查看容器一级属性
    在这里插入图片描述
  • 查看容器二级属性
    在这里插入图片描述
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

apiVersion: v1  #版本号
kind: Pod #资源类型
metadata: #元数据
  name:  #pod名称
  namespace:  #pod所属命名空间
  labels:  #标签列表
    key1: value1
    key2: value2
  annotations:  #资源注解,与label不同在于他不能用于挑选资源对象,仅用于为对象提供“元数据”。
    key1: value1
    key2: value2
spec:  #必选,pod中容器的详细定义
  containers: #pod中的容器列表,可以有多个容器
  - name:  #容器名称
    image: #容器的镜像名称
    imagePullPolicy:  (Always, Never, IfNotPresent) #获取镜像的策略,Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像,如果镜像tag是lastest默认为Always,否则默认为IfNotPresent
    command: #容器的启动命令列表,如不指定,使用打包时使用的启动命令,需要指定bash shell,对应Dockerfile的ENTRYPOINT,定义command后,只会运行command下的命令(优先执行与其他子字段下的command)
    args: #容器的启动命令参数列表,向command中传参数
    workingDir: #容器的工作目录
    resources:#西元配额
      limits: #资源限制上线
        cpu: "2" #cpu限制
        memory: 10G  #内存限制
      requests:#资源限制下线
        cpu: "4"
        memory: 20G
    ports: #需要暴露的端口列表
    - name:  #端口号名称
      containerPort: #容器所在pod的IP地址上暴露的端口
      protocol:  #端口协议,支持TCP和UDP,默认TCP
    volumeMounts:  #挂载到容器内部的存储卷配置
    - name: #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
      mountPath:  #存储卷在容器内mount的绝对路径
      
  • 30
    点赞
  • 235
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
是一些Kubernetes集群维护的基本命令: 1. 获取集群信息:kubectl cluster-info ```shell kubectl cluster-info ``` 2. 获取节点信息:kubectl get nodes ```shell kubectl get nodes ``` 3. 获取Pod信息:kubectl get pods ```shell kubectl get pods ``` 4. 获取服务信息:kubectl get services ```shell kubectl get services ``` 5. 获取命名空间信息:kubectl get namespaces ```shell kubectl get namespaces ``` 6. 获取配置信息:kubectl config view ```shell kubectl config view ``` 7. 获取事件信息:kubectl get events ```shell kubectl get events ``` 8. 获取日志信息:kubectl logs <pod-name> ```shell kubectl logs <pod-name> ``` 9. 获取Pod的详细信息:kubectl describe pod <pod-name> ```shell kubectl describe pod <pod-name> ``` 10. 获取服务的详细信息:kubectl describe service <service-name> ```shell kubectl describe service <service-name> ``` 11. 获取节点的详细信息:kubectl describe node <node-name> ```shell kubectl describe node <node-name> ``` 12. 获取命名空间的详细信息:kubectl describe namespace <namespace-name> ```shell kubectl describe namespace <namespace-name> ``` 13. 获取部署的详细信息:kubectl describe deployment <deployment-name> ```shell kubectl describe deployment <deployment-name> ``` 14. 获取状态集的详细信息:kubectl describe statefulset <statefulset-name> ```shell kubectl describe statefulset <statefulset-name> ``` 15. 获取副本集的详细信息:kubectl describe replicaset <replicaset-name> ```shell kubectl describe replicaset <replicaset-name> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值