K8S 通過 yaml 文件創建資源


創建 pod

cd ~
vi pod-demo.yaml
# 內容如下 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
  - name: busybox
    image: busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"

# 使用 kubectl create 創建 pod
kubectl create -f pod-demo.yaml

# 這個 pod 里面有兩個容器,一個是 myapp,一個是 busybox
# 查看日志
kubectl logs pod-demo myapp

# 進入 pod 中的容器內部
kubectl exec -it pod-demo -c myapp -- /bin/sh

創建 deployment

vi deploy-demo.yaml
# 內容如下 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
      release: canary
  template:
    metadata:
      labels:
        app: myapp
        release: canary
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80

# 使用 kubectl apply 創建 deployment
kubectl apply -f deploy-demo.yaml 


# 通過 kubectl describe 查看 deployment 信息
kubectl describe deploy myapp-deploy

創建 DeamonSet

DeamonSet 用於每個 Node 最多只運行一個 Pod 副本的場景。正如其名稱所揭示的,DaemonSet 通常用於運行 daemon。如果一個 yaml 文件中需要定義兩種資源需要使用 --- 進行分割。

vi ds-demo.yaml 
# 內容如下
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
      role: logstor
  template:
    metadata:
      labels:
        app: redis
        role: logstor
    spec:
      containers:
      - name: redis
        image: redis:4.0-alpine
        ports:
        - name: redis
          containerPort: 6379

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-ds
  namespace: default
spec:
  selector:
    matchLabels:
      app: filebeat
      release: stable
  template:
    metadata:
      labels:
        app: filebeat
        release: stable
    spec:
      containers:
      - name: filebeat
        image: ikubernetes/filebeat:5.6.5-alpine
        env:
        - name: REDIS_HOST
          value: redis.default.svc.cluster.local
        - name: REDIS_LOG_LEVEL
          value: info

kubectl apply -f ds-demo.yaml 
kubectl expose deployment redis --port=6379

創建 service

vi myapp-svc.yaml
# 內容如下:
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
spec:
  selector:
    app: myapp
    release: canary
  clusterIP: 10.99.99.99
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080

kubectl apply -f myapp-svc.yaml 

# 說明
port       :service 暴露在 cluster ip上的端口
targetPort :targetPort 是 pod 上的端口
nodePort   :  暴露在集群物理節點上 node 的端口 

可以使用其他機器訪問 kubernets 上的 30080 端口來訪問頁面
eg:
192.168.31.205:30080
192.168.31.206:30080
192.168.31.207:30080


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM