k8s - !!! minikube的使用

访问量: 9

refer to: https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/

minikube start --force   启动 k8s集群 

kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.53 -- /agnhost netexec --http-port=18080  创建一个deployment

kubectl expose deployment hello-node --type=LoadBalancer --port=8080

minikube service hello-node

kubectl get deployment

kubectl get node

kubectl get pod

kubectl get service

kubectl exec -it my-hi-64878774b7-zfc8x -- /bin/bash

kubectl top  node/pod  (需要先 minkube addon enable metric-server) 

kubectl delete service/deployment/node/pod  删除一个东西

kubectl logs node/pod  查看日志 ?

minikube addons list  查看addon

minikube addons enable metrics-server 启用 metrics-server

kubectl config view 查看配置

kubectl get events 查看 k8s 的各种事件

minikube stop  停止k8s集群

k8s master node 上的进程:

apiserver: 接收kubectl的请求

controller :负责启动deployment, pod, 等

scheduler  :定时任务

etcd  保存所有的数据

worker node上的进程:

kubelet 跟master汇报用的进程

kube-proxy 网络代理

docker, containerd 容器

部署一个 go-app + mysql:

创建 mysql.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: "testdb"
        ports:
        - containerPort: 3306
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-svc   # 这个名字就是域名!
spec:
  selector:
    app: mysql
  ports:
  - port: 3306
  clusterIP: None   # Headless Service,适合数据库

运行: kubectl apply -f mysql.yaml

增加 go-app.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-app
  template:
    metadata:
      labels:
        app: go-app
    spec:
      containers:
      - name: go-app
        image: golang:1.22
        command: ["/bin/sh", "-c"]
        args:
        - |
          sleep infinity  # 保持容器运行,方便你测试
        workingDir: /app
        volumeMounts:
        - name: app-code
          mountPath: /app
      volumes:
      - name: app-code
        emptyDir: {}

运行: kubectl apply -f go-app.yaml

然后,

kubectl cp main.go <go-app-name>:/app/    复制代码进去

kubectl exec -it <go-app-name> -- /bin/bash   进入到容器

> go run main.go  运行go 代码,编译过程略。

就可以看到,go代码运行后,可以连接到数据库了。

结论:jk

k8s中的网络,跟docker-compose中一样,使用容器名即可访问。

进一步:

1. 使用本地的volume ,映射到k8s容器

2. 

订阅/RSS Feed

Subscribe