匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

初学 Kubernetes,快速入门手册!

初学 Kubernetes,快速入门手册!

随着云计算技术的发展,容器化已经成为了最流行的应用部署方式之一。而 Kubernetes 作为容器编排工具的代表,已经成为了容器编排的领袖。本文将为初学 Kubernetes 的读者提供一个快速入门手册,帮助读者了解 Kubernetes 的基本概念和使用方法。

什么是 Kubernetes?

Kubernetes (k8s) 是一个用于部署、管理和扩展容器化应用的开源平台。它最初是由 Google 开发的,现在已走向开源社区并由 Cloud Native Computing Foundation (CNCF) 托管。Kubernetes 提供了一种通用的容器编排模型,可以管理包括 Docker 等在内的多种容器平台。

Kubernetes 的架构

在了解如何使用 Kubernetes 之前,需要先了解其架构。Kubernetes 的架构如下:

![Kubernetes Architecture](https://miro.medium.com/max/1400/1*Fo1Vm0FFg3eBdCnq3e1n_Q.png) 

Master 节点由多个组件组成,包括:

- Kubernetes API Server:负责处理 API 请求,是 Kubernetes 系统的前端。
- etcd:一个高可用的键值存储系统,用于存储 Kubernetes 集群的各种信息。
- Kubernetes Controller-Manager:负责处理不同资源的控制器,例如部署和服务等。
- Kubernetes Scheduler:负责对集群中的应用进行调度和分配。

Node 节点是运行容器的机器,由以下组件组成:

- Kubelet:与 Kubernetes API Server 进行通信,并处理 Master 节点分配给它的任务。
- Kube-Proxy:负责实现 Kubernetes Service 的网络代理。
- Container Runtime:容器运行时,如 Docker。

Kubernetes 对象

Kubernetes 的核心是对象,可以使用 Kubernetes API 对这些对象进行管理。下面是一些常用的 Kubernetes 对象:

- Deployment:定义了应用的期望运行状态,Kubernetes 将尝试始终使应用处于该状态。
- Service:定义了一个逻辑应用,其行为类似于一个负载均衡器,提供了一个稳定的 IP 和 DNS 名称以便其他应用可以访问它。
- Pod:是一个或多个容器的集合,它们在同一个节点上运行,并共享同样的存储和网络资源。

在 Kubernetes 中创建对象需要使用 YAML 或 JSON 文件来描述对象的规范。下面是一个简单的 Deployment YAML 示例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      app: hello-world
  replicas: 3
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello
        image: hello-world
        ports:
        - containerPort: 80
```

在上述示例中,我们定义了一个应用的名称为 `hello-world` 的 Deployment,将其扩展为三个 Pod,每个 Pod 包含一个名为 `hello` 的容器,以及将容器端口映射到主机端口 80。

Kubernetes 命令行工具

在使用 Kubernetes 时,可以使用以下命令行工具:

- kubectl:Kubernetes 的命令行客户端,用于与 Kubernetes API 通信。
- kubeadm:用于初始化和管理 Kubernetes 集群的命令行工具。
- minikube:可以在本地快速启动一个 Kubernetes 集群的工具。
- k9s:一个命令行的 Kubernetes 管理工具,可以方便地查看和管理 Kubernetes 的资源对象。

Kubernetes 的使用

接下来,我们将介绍如何使用 Kubernetes。首先需要在本地或远程操作系统上安装 Kubernetes,可以通过 Minikube 快速启动一个 Kubernetes 集群。安装 kubectl 后,可以使用以下命令检查集群状态:

```
$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
KubeDNS is running at https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
```

创建一个 Deployment 和 Service 可以使用以下命令:

```
$ kubectl create deployment hello-world --image=gcr.io/hello-minikube-zero-install/hello-go
$ kubectl expose deployment hello-world --type=NodePort --port=8080
```

上述命令分别创建了一个名为 `hello-world` 的 Deployment,并将其暴露为一个类型为 NodePort 的 Service。可以使用以下命令查看 Service 的信息:

```
$ kubectl get service hello-world
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
hello-world   NodePort    10.107.71.111            8080:30929/TCP   30m
```

在 Kubernetes 中通过以下命令查看 Pod 的信息:

```
$ kubectl get pod
NAME                           READY     STATUS    RESTARTS   AGE
hello-world-84dd5cb4db-mv87j   1/1       Running   0          11m
```

可以使用以下命令访问部署在 Kubernetes 集群上的应用:

```
$ curl http://:
Hello, World!
```

结论

通过本文,读者可以对 Kubernetes 的基本概念和使用方法有一个初步的认识。相信通过上述介绍,初学 Kubernetes 的读者已经能够快速入门并开始使用 Kubernetes 来管理容器化应用。