k8s集群yaml配置详解及常用指令

k8s常用指令

# 根据yaml文件部署
kubectl apply -f <文件名>
# 根据yaml文件删除
kubectl delete -f <文件名>
# 查看k8s个组件的状态
kubectl get node,pod,svc
# 查看node详情
kubectl describe node <node名称>
# 查看pod详情
kubectl describe pod <pod名称>
# 查看service详情
kubectl describe svc <svc名称>
# 删除svc 
kubectl delete svc <svc名称> -n <命名空间>
# 进入容器内部
kubectl exec -it <pod名称> -c <容器组空间> -n <命名空间> -- bash
# 容器拷贝文件到本地服务器
kubectl cp -n <命名空间> <pod名称>:/文件src /本地文件
#--previous=true表示查看之前的日志
kubectl logs --previous=true pod名称 -c 容器组名称 -n 命名空间

k8s的yaml文件配置详解

Kubernetes中文文档

缩进标识层级关系
不支持制表符缩进,使用空格缩进
通常开头缩进两个空格
字符后缩进一个空格, 如冒号,逗号,- 等
“—”表示YAML格式,一个文件的开始,用于分隔文件间。
“#”表示注释

Service

apiVersion: v1
kind: Service
metadata:                                   #元数据
  name: string                              #名称
  namespace: string                         #命名空间
  labels:                                   #标签信息
    k8s.kuboard.cn/layer: ''
    k8s.kuboard.cn/name: string   
  annotations:                              #注释信息
    k8s.kuboard.cn/workload: string   
spec:                                       #定义Service模板
  clusterIP: ip address                     #指定svcip地址 不指定则随机 
  
 =================================================================================================
  #NodePort类型:集群外网络
  type: NodePort                            #类型为NodePort  
  ports:
    - name: string
      nodePort: 30001                       #当type = NodePort时,指定映射到物理机的端口号
      port: 80                              #服务监听的端口号
      protocol: TCP                         #端口协议,支持TCP和UDP,默认TCP
      targetPort: 80                        #需要转发到后端Pod的端口号
  
  ==================================================================================================
  #ClusterIP类型: 集群内网络
  type: ClusterIP                           #
  ports:
    - name: string
      port: 80
      protocol: TCP
      targetPort: 80
    - name: string
      port: 22
      protocol: TCP
      targetPort: 22
  selector:                                 #label selector配置,将选择具有label标签的Pod作为管理 
    k8s.kuboard.cn/layer: ''
    k8s.kuboard.cn/name: string   
  sessionAffinity: None                     #是否支持session

Deployment

apiVersion: apps/v1                            
kind: Deployment                               
metadata:	                                   #元数据
  name: string                                 #名称
  namespace: string                            #命名空间	
  labels:                                      #标签信息
    name: string                               
  annotations:                                 #注释信息
    deployment.kubernetes.io/revision: '1'     
    k8s.kuboard.cn/ingress: 'false'            
    k8s.kuboard.cn/service: NodePort           
    k8s.kuboard.cn/workload: string            
                                               
spec:                                          #定义容器模板,该模板可以包含多个容器	
  replicas: 3                                  #副本数量
  selector:                                    #标签选择器
    matchLabels:                               
      k8s.kuboard.cn/layer: ''                 
      k8s.kuboard.cn/name: string              
  strategy:                                    #滚动升级策略
    type: RollingUpdate                        #类型
    rollingUpdate:                             #由于replicas为3,则整个升级,pod个数在2-4个之间		
      maxSurge: 25%                            #滚动升级时会先启动25%pod	
      maxUnavailable: 25%                      #滚动升级时允许的最大Unavailable的pod个数
  template:										 #镜像模板										
    metadata:	                               #元数据
      labels:                                  #标签
        k8s.kuboard.cn/layer: ''               
        k8s.kuboard.cn/name: string            
    spec:                                      #定义容器模板,该模板可以包含多个容器
      containers:                              #容器信息
		- name: string                         #容器名称
          image: url:version                   #镜像名称:版本号
          imagePullPolicy: Always              #镜像下载策略	
          ports:                               
            - name: http                       
              containerPort: 80                
              protocol: TCP                    
          env                                  
          resources:                           #CPU内存限制
		    limits:	                           #限制cpu内存											
              cpu: 200m                        
              memory: 200m                     
            requests:                          #请求cpu内存
              cpu: 100m                        
              memory: 100m                     
          securityContext:                     #安全设定
            privileged: true                   #开启享有特权
          volumeMounts:	                       #挂载volumes中定义的磁盘
		    - name: html                       #挂载容器1
              mountPath: /var/www/html         
            - name: session                    #挂载容器1
              mountPath: /var/lib/php/session 	  
      volumes:                                 #在该pod上定义共享存储卷列表
        - name: html                           #共享存储卷名称 (volumes类型有很多种)
          persistentVolumeClaim:               #volumes类型为pvc
            claimName: html                    #关联pvc名称
        - name: session                        
          persistentVolumeClaim:               
            claimName: session			       
      restartPolicy: Always	                   #Pod的重启策略 
                                               #Always表示一旦不管以何种方式终止运行,
                                               #kubelet都将重启,
                                               #OnFailure表示只有Pod以非0退出码退出才重启,
                                               #Nerver表示不再重启该Pod
      schedulerName: default-scheduler         #指定pod调度到节点

Pod

apiVersion: v1                                   #指定api版本,此值必须在kubectl apiversion中  
kind: Pod                                        #指定创建资源的角色/类型  
metadata:                                        #资源的元数据/属性  
  name: string                                   #资源的名字,在同一个namespace中必须唯一  
  labels:                                        #设定资源的标签,使这个标签在service网络中备案,以便被获知
    name: string                                 
  annotations:                                   #设置自定义注解列表  
    - name: String                               #设置自定义注解名字  
spec:                                            #设置该资源的内容  
  restartPolicy: Always/Never/OnFailure          #Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
  nodeSelector:                                  #选择node   
    key:value                                    #通过key-value的方式映射。
  containers:                                    
  - name: string                                 #容器的名字  
    image: string:version                        #容器使用的镜像地址  
    imagePullPolicy: Always/Never/IfNotPresent   #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,
                                                 # Always,每次都检查
                                                 # Never,每次都不检查(不管本地是否有)
                                                 # IfNotPresent,如果本地有就不检查,如果没有就拉取
    command: ['sh']                              #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT  
    args: ["$(str)"]                             #启动容器的命令参数,对应Dockerfile中CMD参数  
    env:                                         #指定容器中的环境变量  
    - name: str                                  #变量的名字  
      value: "/etc/run.sh"                       #变量的值  
    resources:                                   #资源管理
      requests:                                  #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行  
        cpu: 0.1                                 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)
        memory: 32Mi                             #内存使用量  
      limits:                                    #资源限制  
        cpu: 0.5                                 
        memory: 32Mi                             
    ports:                                       
    - containerPort: 8080                        #容器开发对外的端口
      name: uwsgi                                #名称
      protocol: TCP                              
    livenessProbe:                               #pod内容器健康检查的设置
      httpGet:                                   #通过httpget检查健康,返回200-399之间,则认为容器正常  
        path: /                                  #URI地址  
        port: 8080                               
        #host: 127.0.0.1                         #主机地址  
        scheme: HTTP                             
      initialDelaySeconds: 180                   #表明第一次检测在容器启动后多长时间后开始  
      timeoutSeconds: 5                          #检测的超时时间  
      periodSeconds: 15                          #检查间隔时间  
      #也可以用这种方法  
      #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常  
      #  command:  
      #    - cat  
      #    - /tmp/health  
      #也可以用这种方法  
      #tcpSocket: //通过tcpSocket检查健康   
      #  port: number   
    lifecycle:                                   #生命周期管理(钩子)  
      postStart:                                 #容器运行之前运行的任务  
        exec:                                    
          command:                               
            - 'sh'                               
            - 'yum upgrade -y'                   
      preStop:                                   #容器关闭之前运行的任务  
        exec:                                    
          command: ['service httpd stop']        
    volumeMounts:                                #挂载设置
    - name: volume                               #挂载设备的名字,与volumes[*].name 需要对应    
      mountPath: /data                           #挂载到容器的某个路径下  
      readOnly: True                             
  volumes:                                       #定义一组挂载设备  
  - name: volume                                 #定义一个挂载设备的名字  
    #meptyDir: {}                                
    hostPath:                                    
      path: /opt                                 #挂载设备类型为hostPath,路径为宿主机下的/opt
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值