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.
