annidy / notes

0 stars 0 forks source link

Kubernetes Crash Course for Absolute Beginners notes #275

Open annidy opened 1 month ago

annidy commented 1 month ago

Video

概念

  1. Pod - 容器抽象
  2. Service - 容器之间的域名解析,避免固定IP
  3. Ingress - 外部访问集群
  4. ConfigMap、Secret - 外部配置
  5. Volume - 数据持久化
  6. Deployment、StatefulSet - 蓝图(实例副本相关)

配置文件

k8s的配置文件通常有几部分组成:kind、metadata、spec。 apiVersion标识不同版本。 通常在一个配置文件中,用分隔符---来配置多个不同的kind。

Minikube

方便在单机跑起k8s集群

Issue

在minikube中开启NodePort,并不能在Host机上通过minikube ip的地址访问。 解决方案是通过

minikube service --all

为里面的服务开启一个ssh隧道进行端口转发。

mac电脑下无法访问minikube的NodePort端口

annidy commented 1 month ago

mongon.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongo-config
data:
  mongo-url: "mongo-service"

---
apiVersion: v1
kind: Secret
metadata:
  name: mongo-secret
type: Opaque
data:
  mongo-password: cGFzcw==  #pass
  mongo-user: dXNlcg== #user

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-deployment
  labels:
    app: mongo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
  template:
    metadata:
      labels:
        app: mongo
    spec:
      containers:
      - name: mongodb
        image: mongo:5.0
        ports:
        - containerPort: 27017
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: mongo-user
        - name: MONGO_INITDB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: mongo-password

---
apiVersion: v1
kind: Service
metadata:
  name: mongo-service
spec:
  ports:
  - port: 27017
    targetPort: 27017
  selector:
    app: mongo

webapp.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp-deployment
  labels:
    app: webapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: nanajanashia/k8s-demo-app:v1.0
        ports:
        - containerPort: 3000
        env:
        - name: USER_NAME
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: mongo-user
        - name: USER_PWD
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: mongo-password
        - name: DB_URL
          valueFrom:
            configMapKeyRef:
              name: mongo-config
              key: mongo-url
---
apiVersion: v1
kind: Service
metadata:
  name: webapp-service
spec:
  type: NodePort
  selector:
    app: webapp
  ports:
  - protocol: TCP
    port: 3000
    targetPort: 3000
    nodePort: 30100