栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8s-基本命令

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 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: <[]Object> -required- #pod中的容器列表,可以有多个容器
  - name:  -required- #容器名称
    image:  -required- #容器的镜像名称
    imagePullPolicy:  (Always, Never, IfNotPresent) #获取镜像的策略,Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像,如果是lastest默认为Always,否则默认为IfNotPresent
    command: <[]string> #容器的启动命令列表,如不指定,使用打包时使用的启动命令,需要指定bash shell,对应Dockerfile的ENTRYPOINT,定义command后,只会运行command下的命令(优先执行与其他子字段下的command)
    args: <[]string> #容器的启动命令参数列表,向command中传参数,对应Dockerfile的CMD
    workingDir:  #容器的工作目录
    ports: <[]Object> #需要暴露的端口列表
    - name:  #端口号名称
      containerPort:  -required- #容器所在pod的IP地址上暴露的端口
      hostPort:  #容器所在节点暴露的端口,默认与Container相同
      hostIP:  #绑定host主机IP地址对应外部端口(调度节点不确定)
      protocol:  #端口协议,支持TCP和UDP,默认TCP
    volumeMounts: <[]Object> #挂载到容器内部的存储卷配置
    - name: #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
      mountPath:  -required- #存储卷在容器内mount的绝对路径  
    env: <[]Object>
      name:  -required-
      value: 
      valueFrom: 
    livenessProbe:  #容器存活状态探测
      exec:  # 执行用户自定义命令
        command: <[]string>
      httpGet:  #指定要执行的http请求
        host:  #Pod的IP地址
        httpHeaders:  
        path:  #表示向哪个url发起请求
        port:  -required- #指定端口
      tcpSocket:  #指定涉及TCP端口的操作。 尚不支持TCP挂钩
        host:  #Pod的IP地址
        port:  -required- #指定端口
      initialDelaySeconds:  #在容器启动后多少秒进行探测,默认容器启动就探测(主进程需要启动时间)
      failureThreshold:  #探测器探测的最小连续故障次数,到达此次数即视为失败,默认3,最小1
      successThreshold: 
      periodSeconds:  #执行探测的频率(单位s),默认10s,最下1s
      timeoutSeconds:  #探测超时的秒数,默认1s
    readinessProbe:  #就绪状态探测,子字段和livenessProbe一样
    lifecycle: 
      postStart:  #在容器创建后立即执行的
        exec: 
        httpGet: 
        tcpSocket: 
      preStop:  #在容器终止后立即执行的
  volumes: <[]Object>
    emptyDir: {}
    hostPath: 
      path:  -required-
      type:  #DirectoryOrCreate:宿主机目录不存在就创建;Directory:宿主机目录必须存在;FileOrCreate:宿主机文件不存在就创建;File:宿主机文件必须存在;Socket:;CharDevice:BlockDevice:;默认为空
    nfs: 
      path:  -required-
      readOnly:  #默认false
      server:  -required- #NFS server地址
    persistentVolumeClaim: 
      claimName:  -required-
      readOnly: 
  nodeName:  #通过节点名称选择指定的部署主机
  nodeSelector:  #标签选择器,通过标签指定部署的节点(标签:key: value)
  restartPolicy:  #pod内容器重启策略,Always:总是重启、OnFailure:只有状态错误才重启、Never:从来不重启,默认总是重启
  hostNetwork:  #是否使用主机的网络命名空间
  hostPID: 
  hostIPC: 
  serviceAccountName:  #指定创建的serviceaccount名称
status: 



转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号