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
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 用於每一個 Node 最多隻運行一個 Pod 副本的場景。正如其名稱所揭示的,DaemonSet 一般用於運行 daemon。若是一個 yaml 文件中須要定義兩種資源須要使用 --- 進行分割。node
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
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:30080redis