一、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文档