Kubernetes 简称(K8s)基本应用

166167次阅读
一条评论

共计 4336 个字符,预计需要花费 11 分钟才能阅读完成。

Kubernetes 简称(K8s)

Kubernetes是一个用于大规模部署分布式应用的平台,管理一些列主机或服务器,被称为NODE,每个节点运行了
若干个相互独立的pod,pod是Kubernetes中可以部署的最小执行单元,即一个或者多个容器的集合。

管理这些pod的中心计算机为控制平面。Control Plane,通过专有API与各个节点进行通信。

备用POD称为副本集合,Replica Set. pod与Control Plane叫做集群Cluster

有现成出云服务商。
Kubernetes 简称(K8s)基本应用

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

  1. 服务(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/上使用。
    
  2. 负载均衡(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 上可用
    
  3. 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

正文完
 3
Chou Neil
版权声明:本站原创文章,由 Chou Neil 于2024-12-08发表,共计4336字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
Neil 博主
2024-12-14 04:11:20 回复