【云原生】k8s声明式资源管理

 1.资源配置清单的管理

1.1 查看资源配置清单 

 
kubectl get deployment nginx -o yaml
//解释资源配置清单
kubectl explain deployment.metadata

查看deployment资源清单 【云原生】k8s声明式资源管理_第1张图片

 

【云原生】k8s声明式资源管理_第2张图片

 

1.2 修改资源配置清单并应用

 离线修改

离线修改的过程:

(1)首先将配置资源导入通过重定向符号导入到yaml文件中

(2)通过vim编辑器进行yaml配置文件,删除多余的选项,修改配置项,进行保存

 (3) 通过apply -f  该yaml 文件 或者是   (先  deleter -f 该yaml文件,再create -f 该yaml 文件)

 用来实现声明式离线修改资源清单的配置

create与apply的区别:

 create和apply都能运用于资源模板的创建,但是create创建资源模板属于固定式的资源配置,一旦创建,后期想要修改时,就只能通过先delete删除资源模板,再进行create创建,达到资源更新的效果。

而apply属于一种实时更新使用的创建模板方式,后期对资源模板的配置文件进行修改时,只需要先修改配置文件,再使用apply -f 指定配置文件即可。

但是apply并不是什么情况下都能生效使用。如果你发现配置并不生效,而且与书写格式无关,则

可以先delete -f 该配置文件,再create -f 该配置文件
 

修改yaml文件,并用kubectl apply -f xxxx.yaml 文件使之生效
注意:当apply不生效时, 先使用delete清除资源,再apply创建资源
 
kubectl get service nginx -o yaml > nginx-svc.yaml
vim nginx-svc.yaml    #修改port:8080
kubectl delete -f nginx-svc.yaml  #删除yaml文件
kubectl apply -f nginx-svc.yaml   #应用yaml文件
kubectl get SVC

【云原生】k8s声明式资源管理_第3张图片

 

【云原生】k8s声明式资源管理_第4张图片

 

在线修改

 直接使用kubectl edit service nginx
 在线编辑资源配置清单并保存退出即时生效( 如port: 9000)
此修改方式不会对yaml文件内容修改

下面要对下面的nginx-service资源进行修改,修改端口号

 【云原生】k8s声明式资源管理_第5张图片

 

1.3 删除资源配置清单

陈述式删除:
Kubernetes 支持YAML和JSON格式管理资源对象
JSON 格式:主要用于api接口之间消息的传递
YAML格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读
kubectl delete pods nginx
声明式删除
kubectl delete -f nginx-svc.yaml

 2.自主编写资源清单

 2.1 初步认识资源清单中svc的重要配置项

Service yaml文件详解
 
apiVersion: v1
kind: Service
matadata:                                #元数据
  name: string                           #service的名称
  namespace: string                      #命名空间  
  labels:                                #自定义标签属性列表
    - name: string
  annotations:                           #自定义注解属性列表  
    - name: string
spec:                                    #详细描述
  selector: []                           #label selector配置,将选择具有label标签的Pod作为管理 
                                         #范围
  type: string                           #service的类型,指定service的访问方式,默认为 
                                         #clusterIp
  clusterIP: string                      #虚拟服务地址      
  sessionAffinity: string                #是否支持session
  ports:                                 #service需要暴露的端口列表
  - name: string                         #端口名称
    protocol: string                     #端口协议,支持TCP和UDP,默认TCP
    port: int                            #服务监听的端口号
    targetPort: int                      #需要转发到后端Pod的端口号
    nodePort: int                        #当type = NodePort时,指定映射到物理机的端口号
  status:                                #当spce.type=LoadBalancer时,设置外部负载均衡器的地址
    loadBalancer:                        #外部负载均衡器    
      ingress:                           #外部负载均衡器 
        ip: string                       #外部负载均衡器的Ip地址值
        hostname: string                 #外部负载均衡器的主机名

2.2 手动编写 svc资源配置 

编写service服务的资源清单
vim nginx-server.yaml
 
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
  namespace: default
  labels:
    app: nginx
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080
  selector:
    app: nginx
 
 
 
#创建资源对象
kubectl create -f nginx-service.yaml
 
#查看创建的service
kubectl get svc
 
 
补充:
详解k8s中的port
●port
port是k8s集群内部访问service的端口,即通过clusterIP: port可以从Pod所在的Node. 上访问到service 
●nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort 可以从外部访问到某个service。
●targetPort
targetPort是Pod的端口,从port或nodePort来的流量经过kube-proxy 反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器。
●containerPort
containerPort是Pod内部容器的端口,targetPort映射到containerPort

3.手动生成模板,再编写资源清单 

(1)生成模板 

用--dry-run命令生成yaml资源清单
 
kubectl run --dry-run 打印相应的 API 对象试运行而不执行创建
#空跑测试
kubectl run nginx-svc2 --image=nginx:1.17  --port=80 --dry-run=client
 
#空跑测试的输出结果
kubectl run nginx-svc2 --image=nginx:1.17  --port=80 --dry-run=client -o yaml
#生成模板
kubectl run nginx-svc2 --image=nginx:1.17  --port=80 --dry-run=client -o yaml >nginx-svc2.yaml

 

(2)修改并编写模板

vim nginx-svc2.yaml 
kubectl apply -f nginx-svc2.yaml
kubectl get pods

【云原生】k8s声明式资源管理_第6张图片

 

4 官网下载资源模板

www.kubernetes.io

【云原生】k8s声明式资源管理_第7张图片

 

【云原生】k8s声明式资源管理_第8张图片

 

【云原生】k8s声明式资源管理_第9张图片

 

你可能感兴趣的:(云原生,kubernetes,容器)