k8s 入门demo

K8S 创建资源的两种方式

在 K8S 中,有两种创建资源的方式:kubectl 命令和 yaml 配置文件。

两种方式各有各的好处。命令行的方式最为简单,一条命令就万事大吉,但缺点也很明显,你并不知道这条命令背后到底做了哪些事,配置文件就提供了一种让你知其然更知其所以然的方式。

配置Demo

k8s 配置是基于yaml,和spring boot 配置文件的yaml是一样的,用法就不详记了。

deployment

定义 deployment 配置文件,命名为:nginx-deployment.yaml

apiVersion: apps/v1   # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
kind: Deployment    #指定创建资源的角色/类型
metadata:    #资源的元数据/属性
  name: nginx-deployment    #资源的名字,在同一个namespace中必须唯一
spec:
  replicas: 2    #副本数量2
  selector:      #定义标签选择器
    matchLabels:
      app: web-server
  template:      #这里Pod的定义
    metadata:
      labels:    #Pod的label
        app: web-server
    spec:        # 指定该资源的内容  
      containers:  
      - name: nginx      #容器的名字  
        image: nginx:1.12.1  #容器的镜像地址    
        ports:  
        - containerPort: 80  #容器对外的端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

执行kubectl create -f nginx.yaml创建 deployment 资源:

pod

定义 pod 配置文件,命名为 redis-pod.yaml

apiVersion: v1
kind: Pod  
metadata:  
  name: pod-redis
  labels:
    name: redis
spec: 
  containers:
  - name: pod-redis
    image: docker.io/redis  
    ports:
    - containerPort: 80 #容器对外的端口
1
2
3
4
5
6
7
8
9
10
11
12

执行kubectl create -f pod-redis.yaml创建 pod 资源

service

定义 service 配置文件,命名为 httpd-svc.yaml

apiVersion: v1  
kind: Service  # 指明资源类型是 service
metadata:  
  name: httpd-svc # service 的名字是 httpd-svc
  labels:  
    name: httpd-svc 
spec:  
  ports:  # 将 service 8080 端口映射到 pod 的 80 端口,使用 TCP 协议
  - port: 8080
    targetPort: 80  
    protocol: TCP  
  selector:  
    run: httpd # 指明哪些 label 的 pod 作为 service 的后端
1
2
3
4
5
6
7
8
9
10
11
12
13

执行kubectl create -f httpd-svc.yaml创建 service 资源:

参考资料

Kubernetes 笔记 05 yaml 配置文件详解

学习资料