K8S实战
01、K8s实战:Windows10安装Docker,配置阿里云加速器
02、K8s实战:基础知识之简介
03、K8s实战:基础知识之组件
04、K8s实战:Centos7.6yum安装Docker,配置阿里云加速器
05、K8s实战:Centos7.6安装dockercompose
06、K8s实战:Centos7.6使用Ansible安装K8S(测试单节点)
07、K8s实战:Dockercompose安装中文版GitLab,配置SSH免密登录
08、K8s实战:Centos7.6安装私服Harbor
09、K8s实战:SpringBoot使用jib打包Docker镜像至私服
10、K8s实战:dockercompose之网络设置
11、K8s实战:使用开源项目io.fabric8之docker
12、K8s实战:二进制方式搭建K8S集群(环境准备)
13、K8s实战:二进制方式搭建K8S集群(完结)
14、K8s实战:K8S管理平台Rancher安装及集群导入
15、K8s实战:陈述式管理之kubectl常用命令
16、K8s实战:声明式管理示例之K8S部署Nginx及修改删除
17、K8s实战:K8S存储Volume之ConfigMap
18、K8s实战:K8S存储Volume之Secret
19、K8s实战:K8S存储之emptyDir+hostPath
20、K8s实战:K8S存储之NFSPVPVC
21、K8s实战:K8S控制器之ReplicaSet
22、K8s实战:K8S控制器之Deployment
23、K8s实战:K8S控制器之DaemonSet
24、K8s实战:K8S控制器之JobCronJob
25、K8s实战:K8S之Service
26、K8s实战:K8S之Ingress
27、K8s实战:K8S之Schedule
28、K8s实战:K8S之Helm安装与配置
29、K8s实战:K8S之部署微服务项目实战
本文档使用 MrDoc 发布
-
+
首页
16、K8s实战:声明式管理示例之K8S部署Nginx及修改删除
### **前言** 通过kubectl能够对K8S资源进行各种管理,但是操作起来不太方便,K8S提供了声明式的资源管理,即通过编写YML/JSON文件来管理。 资源分类: - 1、 名称空间级别(工作负载:Pod,Rs,Job…服务发现及负载均衡:service,ingress…配置及存储:Volume,CSI…特殊类型存储:configmap,secret…); - 2、 集群级别(namespace,node,role…); - 3、 元数据级别(Hpa,podTemplate…); 查看 ```python # 查看pod kubectl get pods -n test # 查看pod资源清单 kubectl get pods test-nginx-cc44fcc54-cdlh9 -o yaml -n test # 查看svc kubectl get svc -n test # 查看svc资源清单 kubectl get svc test-nginx -o yaml -n test # 查看svc下metadata解释文档 kubectl explain svc.metadata ``` ### **部署nginx** 1、 添加pod; ```python # 编写pod配置清单 vim nginx-pod.yaml # k8sAPI版本 apiVersion: v1 # 资源类型 kind: Pod # 元数据对象 metadata: # 元数据对象名称 name: nginx-pod # 元数据对象命名空间 namespace: test # 资源标签 labels: app: nginx # 自定义注解列表 #annotations: # 自定义注解名字 #name: test-annotation001 spec: # 容器重启策越,默认Always表示一旦不管以何种方式终止运行都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod restartPolicy: Never # 节点选择器,需先给节点定义标签 nodeSelector: node: work001 # pull镜像时使用secret名称 # imagePullSecrets: # 是否使用主机网络模式,默认false,设置为true时,不适用docker网桥 # hostNetwork: # 容器相关 containers: # 容器名 - name: nginx # 使用镜像 image: daocloud.io/library/nginx:1.7.11 # 镜像拉取策略,默认Always,每次都尝试拉取镜像,Never表示仅使用本地镜像,IfnotPresent表示优先使用本地镜像,否则下载镜像 imagePullPolicy: Always # 容器启动命令,数组可指定多个,不指定使用打包时的启动命令 # command: [string] # 容器启动命令参数,数组可指定多个 # args: [string] # 容器的工作目录 # workingDir: string # 指定容器内部存储卷配置 #volumeMounts: # 存储卷名称 #- name: nfs # 挂载路径 #mountPath: "/usr/share/nginx/html" # 是否为只读模式 #readOnly: true # 容器暴露的端口列表 ports: # 端口号名称 - name: nginx-port # 监听端口号 containerPort: 80 # 容器所在主机需要监听的端口号,默认与Container相同,如果设置了,同一个主机将不同启动相同副本,会端口冲突 #hostPort: 80 # 端口协议,支持TCP和UDP,默认TCP protocol: TCP # 容器运行前需设置的环境变量列表,name-变量名称,value-变量值 #env: #- name: #- value: # 资源限制 resources: # 设置容器运行时资源上限 limits: # CPU核数,两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m) cpu: 1 # 内存限制 memory: 100M # 容器启动和调度时的限制设置 requests: cpu: 1 memory: 100M # 健康检查,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket #livenessProbe: # 创建 kubectl create -f nginx-deployment.yaml ``` 2、 添加service; ```python # 编写service资源清单 vim nginx-service.yaml # api版本 apiVersion: v1 # 资源类型 kind: Service # 元数据 metadata: labels: app: nginx-service name: nginx-service # 命名空间,默认为default namespace: test spec: # Service需要暴露的端口列表 ports: # 服务监听的端口号 - port: 80 # 端口名称 name: nginx-port # 端口协议,支持TCP和UDP,默认值为TCP protocol: TCP # 需要转发到后端Pod的端口号 targetPort: 80 # NodePort时指定映射到物理机的端口号 nodePort: 30000 # 选择器配置,将选择具有指定标签的Pod作为管理范围 selector: app: nginx # Service的类型,默认值为ClusterIP:虚拟服务的IP;NodePort:使用宿主机的端口;LoadBalancer:使用外接负载均衡器完成到服务的负载分发 type: NodePort # 创建 kubectl create -f nginx-service.yaml ``` 3、 部署都可通过work001节点的ip+30000访问nginx首页地址;  ### **修改** 修改外部访问端口为31000 ```python # 离线修改 vim nginx-service.yaml # 生效 kubectl apply -f nginx-service.yaml ```  修改外部访问端口为32000 ```python # 在线修改 kubectl edit service nginx-service -n test ```   ### **删除** ```python # 陈述式删除 kubectl delete service nginx-service -n test # 声明式删除 kubectl delete -f nginx-pod.yaml kubectl delete -f nginx-service.yaml ```
李智
2025年3月17日 13:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码