您的位置:

Kubernetes使用教程

一、Kubernetes简介

Kubernetes,常被称为K8s,是一个开源的容器编排平台,它最初是由Google创建的,用于管理自己的容器集群。Kubernetes可以自动化部署、缩放和运行应用程序容器。

Kubernetes可以使用高可用性的架构来管理应用程序部署,它可以处理存储、负载均衡、监控、扩展等多个方面的任务。Kubernetes可以使用容器化的优势,来使得应用程序更加轻便和可移植。

二、Kubernetes安装

1、Kubernetes环境准备

在准备开始安装Kubernetes之前,首先需要准备好以下环境:

1、至少3个以上的Linux主机,且操作系统版本要求保持一致
2、每个节点必须7GB或更多的可用磁盘空间
3、主机之间需要正常的网络和DNS通信

2、Kubernetes部署准备

进行Kubernetes的部署准备,需要执行以下步骤:

1、安装Docker,从官方网址上下载
2、所有节点上都需要将swapp关闭
3、安装Kubernetes客户端kubectl
4、安装和配置kubelet,从官方网址下载
5、安装和配置kubeadm,从官方网址下载

3、Kubernetes安装

部署Kubernetes,需要执行以下步骤:

1、使用kubeadm初始化环境
2、安装和配置网络插件
3、使用kubectl部署应用程序

三、Kubernetes使用教程

1、k8s使用教程网盘下载

在Kubernetes中,为了部署应用程序,需要使用到编排模板——YAML文件。然而,手动编写YAML文件可能会引起一些错误。最好的解决方案是使用云服务商提供的网盘进行下载。

2、Kubernetes Dashboard使用教程

Kubernetes Dashboard是Kubernetes的官方Web UI,通过Dashboard,可以方便地查看和管理Kubernetes集群中的应用程序,也可以执行一些对Kubernetes集群进行管理的操作。在进行Kubernetes Dashboard的安装前,需要先通过以下指令安装和启动Dashboard:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
kubectl proxy

然后,在浏览器中访问以下URL,就可以进入Kubernetes Dashboard。

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

3、Kubernetes教程示例:部署nginx

以下是在Kubernetes上部署nginx的示例:

1、创建一个nginx的Deployment

以下是nginx-deployment.yml文件的示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

将以上内容保存至nginx-deployment.yml文件。

然后使用kubectl创建部署。

kubectl apply -f nginx-deployment.yml

2、创建nginx的service

以下是nginx-service.yml文件的示例:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
  type: NodePort

将以上内容保存至nginx-service.yml文件。

然后,使用kubectl创建服务。

kubectl apply -f nginx-service.yml

接着,可以通过执行以下命令来获取nginx运行的URL:

minikube service nginx-service --url

最后,在浏览器中访问以上获取的URL,就可以看到nginx的欢迎页面了。

4、Kubernetes教程示例:部署应用程序

以下是部署WordPress应用程序的示例:

1、创建WordPress的MySQL

以下是wordpress-mysql.yml文件的示例:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: mysql
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim

将以上内容保存至wordpress-mysql.yml文件。

然后使用kubectl创建MySQL服务。

kubectl apply -f wordpress-mysql.yml

2、创建WordPress

以下是wordpress.yml文件的示例:

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
  - port: 80
  selector:
    app: wordpress
  type: NodePort
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - image: wordpress:4.8-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: mysql
        - name: WORDPRESS_DB_PASSWORD
          value: "password"
        ports:
        - containerPort: 80
          name: wordpress
        volumeMounts:
        - name: wp-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wp-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim

将以上内容保存至wordpress.yml文件。

然后,使用kubectl创建WordPress。

kubectl apply -f wordpress.yml

最后,使用以下命令,在浏览器中打开WordPress:

minikube service wordpress --url

四、Kubernetes实用技巧

1、Kubernetes命令行工具kubectl

如果需要在终端中执行一些跟Kubernetes相关的操作,可以使用kubectl命令。

以下是一些kubectl的常用命令:

kubectl get pods                                    # 获取pod的信息
kubectl get pods -o wide                            # 获取pod的详细信息
kubectl describe pod {pod name}                     # 获取pod的详细信息
kubectl delete pod {pod name}                       # 删除pod
kubectl logs {pod name}                             # 获取pod的日志
kubectl exec -it {pod name} sh                      # 进入pod的shell
kubectl apply -f {file name}                        # 通过YAML文件部署应用程序
kubectl edit {resource type} {resource name}        # 编辑已有的资源
kubectl expose deployment {deployment name}         # 创建服务
kubectl delete service {service name}                # 删除服务

2、Kubernetes Dashboard操作技巧

Kubernetes Dashboard中有几种快捷方式,可以让用户直接访问常用的操作,例如:

1、Nodes:查看群集中的节点
2、Workloads:查看应用程序的工作负载
3、Services & Ingresses:查看群集中的服务和入口配置
4、Config & Storage:查看配置和存储
5、查看使用指南和API文档