共计 4336 个字符,预计需要花费 11 分钟才能阅读完成。
Kubernetes 简称(K8s)
Kubernetes是一个用于大规模部署分布式应用的平台,管理一些列主机或服务器,被称为NODE,每个节点运行了
若干个相互独立的pod,pod是Kubernetes中可以部署的最小执行单元,即一个或者多个容器的集合。
管理这些pod的中心计算机为控制平面。Control Plane,通过专有API与各个节点进行通信。
备用POD称为副本集合,Replica Set. pod与Control Plane叫做集群Cluster
有现成出云服务商。
Minikube的本地使用
个人学习和测试用minikube模拟本地一个K8s集群
安装与启动
minikube start #启动
minikube start --driver=virtualbox --no-vtx-check=true #如果已经安装了virtualbox
创建K8s的配置文件,deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: finance
spec:
replicas: 3
selector:
matchLabels:
app: finance
template:
metadata:
labels:
app: finance
spec:
containers:
- name: finance
image: rossning92/finance #镜像的名称
resources:
limits:
memory: '128Mi'
cpu: '500m'
ports:
- containerPort: 5000
定义K8s的Service
添加NodePort服务
将应用暴露给外网的方式
---
apiVersion: v1
kind: Service
metadata:
name: finance-test-service
spec:
selector:
app: finance
type: NodePort
ports:
- port: 5000
targetPort: 5000
nodePort: 30080
kubectl命令部署刚创建的测试应用
kubectl version #查看版本
kubectl apply -f deployment.yaml #部署应用
kubectl get pods #查看pods
kubectl get services #查看services
minikube service list #查看服务列表
minikube service finance-test-service #打开创建的测试服务
kubectl其他命令
kubectl get nodes #查看集群节点
kubectl get events #查看事件集群
kubectl get po -A #查看访问新集群
kubectl config view #查看 kubectl 配置
kubectl logs hello-node-5f76cf6ccf-br9b5 #查看日志
kubectl expose deployment hello-node --type=LoadBalancer --port=8080 #使用 kubectl expose 命令将 Pod 暴露给公网8080
kubectl get pod,svc -n kube-system #查看通过安装该插件所创建的 Pod 和 Service
kubectl top pods #检查 metrics-server 的输出
kubectl delete service hello-node #清理
kubectl delete deployment hello-node #清理
=====================================================================
Minikube与K8S
- 服务(Services)
创建示例部署并将其公开在端口 8080 上: ================= #kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0 kubectl expose deployment hello-minikube --type=NodePort --port=8080 这可能需要一点时间,但当您运行时,您的部署将很快显示出来: kubectl get services hello-minikube 访问此服务的最简单方法是让 minikube 为您启动一个 Web 浏览器: minikube service hello-minikube 或者,使用 kubectl 转发端口: kubectl port-forward service/hello-minikube 7080:8080 您的应用程序现在可以在http://localhost:7080/上使用。
- 负载均衡(LoadBalancer)
要访问 LoadBalancer 部署,请使用“minikube tunnel”命令。以下是示例部署: ================= kubectl create deployment balanced --image=kicbase/echo-server:1.0 kubectl expose deployment balanced --type=LoadBalancer --port=8080 在另一个窗口中,启动隧道以为“平衡”部署创建可路由的 IP: minikube tunnel 要查找可路由的 IP,请运行此命令并检查EXTERNAL-IP列: kubectl get services balanced 您的部署现已在 <external -IP>:8080 上可用
- ingress路由配置(https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/)
启用路由插件:
minikube addons enable ingress
以下示例创建简单的 echo-server 服务和一个 Ingress 对象来路由到这些服务。
kind: Pod apiVersion: v1 metadata: name: foo-app labels: app: foo spec: containers: - name: foo-app image: 'kicbase/echo-server:1.0' --- kind: Service apiVersion: v1 metadata: name: foo-service spec: selector: app: foo ports: - port: 8080 --- kind: Pod apiVersion: v1 metadata: name: bar-app labels: app: bar spec: containers: - name: bar-app image: 'kicbase/echo-server:1.0' --- kind: Service apiVersion: v1 metadata: name: bar-service spec: selector: app: bar ports: - port: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - http: paths: - pathType: Prefix path: /foo backend: service: name: foo-service port: number: 8080 - pathType: Prefix path: /bar backend: service: name: bar-service port: number: 8080 ---
应用内容
kubectl apply -f https://storage.googleapis.com/minikube-site-examples/ingress-example.yaml
等待入口地址kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE example-ingress nginx * <your_ip_here> 80 5m45s
Docker Desktop 用户请注意:
要使 ingress 正常工作,您需要打开一个新的终端窗口并运行minikube tunnel,并在接下来的步骤中使用127.0.0.1代替。 现在验证入口是否正常工作
$ curl </ip_from_above><ip_from_above>/foo Request served by foo-app $ curl </ip_from_above><ip_from_above>/bar Request served by bar-app
=====================================================================
Minikube中Dashboard与其他命令
minikube dashboard #仪表盘
minikube dashboard --url #仪表盘新连接
minikube pause #暂停 Kubernetes 而不影响已部署的应用程序
minikube unpause #取消暂停的实例
minikube stop #停止集群
minikube config set memory 9001 #更改默认内存限制(需要重新启动).
minikube addons list #浏览易于安装的 Kubernetes 服务目录,列出当前支持的插件
minikube addons enable metrics-server #启用插件 metrics-server
minikube addons disable metrics-server #禁用插件 metrics-server
minikube start -p aged --kubernetes-version=v1.16.1 #创建运行旧 Kubernetes 版本的第二个集群
minikube delete --all #删除所有 minikube 集群
可以参考的文档:
kubernetes官方文档(https://kubernetes.io/zh-cn/docs/tasks/tools/)
kubernetes官方教程(https://kubernetes.io/zh-cn/docs/tutorials/)
minikube官方文档(https://minikube.sigs.k8s.io/docs/start/?arch=%2Fwindows%2Fx86-64%2Fstable%2F.exe+download)
https://www.geeksforgeeks.org/kubernetes-tutorial/?ref=shm