您现在的位置是:首页 > 云原生 > Kubernetes > 正文
Kubernetes
吾八哥学k8s(三):kubernetes里创建资源的方法
上一篇里已经成功的将一个golang的demo服务部署到k8s环境里了,部署的时候我们用到了yaml配置文件,今天这里简单的介绍下如何使用创建kubernetes里的资源。在kubernetes里,一切对象皆为资源,可以通过命令或配置文件来创建。
命令行创建资源
通过命令行可以创建namespace、deployment、service、ingress、configmap、secret等很多资源类型
这里通过命令创建一个名为k8s-test的namespace,命令如下:
kubectl create namespace k8s-test
执行后通过:kubectl get namespace命令可以查到刚刚创建的namespace,如下图:
其他的资源创建方法,可以查看kubernetes中文文档:http://docs.kubernetes.org.cn/490.html
通过配置文件创建资源
上一篇里我们部署k8s-demo服务的时候就是使用配置文件来创建kubernetes资源的,因为使用配置文件可以定义多种资源类型来同时创建,比手工一条条命令去创建确实是方便很多。这里同样通过创建一个k8s-test2的namespace来测试效果,定义yaml配置文件k8s-test2.yaml如下:
apiVersion: v1 kind: Namespace metadata: name: k8s-test2 labels: name: k8s-test2
上面的配置文件里定义了k8s-test2的namespace名称,同时还指定了一个label。执行命令"kubectl apply -f k8s-test2.yaml"后查询namespace列表如下图:
yaml配置文件里还可以定义很多其他的资源对象,根据创建的资源类型而定。
Deployment配置文件说明
这里将上一篇里k8s-demo.yaml文件的配置文件做个简单的说明,补充了若干常用的定义类型:
--- apiVersion: apps/v1 #必须 指定api版本,此值必须在kubectl api-versions里 kind: Deployment #必须 指定资源类型 metadata: #必须 元数据 name: k8s-demo #必须 符合RFC1035规范的名称 namespace: default #可选 指定命名空间,默认为default labels: #可选 标签选择器,一般用于selector app: k8s-demo #label定义 spec: #必须 资源详细 selector: #可选 选择器 matchLabels: app: k8s-demo replicas: 4 #可选 创建pod的副本数量 revisionHistoryLimit: 10 #可选 历史版本最多保留的版本数量 minReadySeconds: 5 #可选 Pod对象启动后多长时间认为就绪,单位秒 strategy: # 更新策略 type: RollingUpdate # 滚动更新 rollingUpdate: maxSurge: 1 #可选 可以超过期望值的最大pod数 默认为25%,maxSurge、maxUnavailable不能同时为0,都可以设置为数字或百分比 maxUnavailable: 1 #可选 在更新时最大不可用的pod数量 默认为25% template: metadata: labels: app: k8s-demo spec: restartPolicy: Always #表示自动重启 containers: - image: www.5bug.wang/docker/k8s-demo:1.0 #容器使用的镜像地址 imagePullPolicy: IfNotPresent #镜像拉取策略Always、Never、IfNotPresent command: ["/bin/bash","-c","./k8s-demo"] #启动命令,需要前台运行命令 # env: #指定环境变量 # - name: app_env # value: qa name: k8s-demo ports: - containerPort: 8080 #容器端口 protocol: TCP resources: #定义资源数据 limits: cpu: 100m memory: 100Mi requests: cpu: 50m memory: 50Mi livenessProbe: #健康检查设置 tcpSocket: port: 8080 #服务端口 initialDelaySeconds: 10 #第一次检测在容器启动后多长时间后开始 timeoutSeconds: 3 #检测的超时时间 readinessProbe: #探针 httpGet: path: /ping #健康检查接口定义 port: 8080 #健康检查端口 initialDelaySeconds: 10 timeoutSeconds: 2 volumeMounts: #挂载配置 - name: logs #挂载设备的名字,与volumes[*].name 需要对应 mountPath: /data/logs #挂载到容器的/data/logs下 readOnly: false volumes: #定义一组挂载设备 - name: logs #定义一个挂载设备的名字 hostPath: path: /data/logs #挂载设备类型为hostPath,路径为宿主机下的/data/logs --- apiVersion: v1 kind: Service #定义Service metadata: name: k8s-demo-svc namespace: default labels: app: k8s-demo spec: ports: - name: api port: 8080 protocol: TCP targetPort: 8080 selector: app: k8s-demo --- apiVersion: extensions/v1beta1 kind: Ingress #定义ingress metadata: name: k8s-demo-ingress namespace: default spec: rules: - host: k8s-demo.local #ingress名称 http: paths: - path: / backend: serviceName: k8s-demo-svc servicePort: api
相关文章
- 在Kubernetes里使用openkruise实现服务原地升级功能
- 吾八哥学k8s(十一):kubernetes里Pod的调度机制
- 吾八哥学k8s(十):kubernetes里Service和Ingress
- kubernetes中服务自定义Prometheus的metrics的方法
- k8s集群安装Prometheus监控以及Grafana面板的方法
- kubernetes集群证书过期的解决方法
- kubelet启动失败报failed to find cgroups of kubelet的解决方法
- 吾八哥学k8s(九):kubernetes里持久化存储
- macOs和Linux环境下kubectl命令自动补齐的方法
- 吾八哥学k8s(八):kubernetes里Secret的用法