1/20
第十二章:Kubernetes 介绍与安装
从这一章节开始正式进入 Kubernetes 的世界。
-
Kubernetes 是什么?
一套在多个机器上运行多个容器的系统。
-
为什么用 Kubernetes?
在容器很多时,使得管理容器和镜像更简单。
-
一些概念
-
Nodes
节点,一个虚拟机或者物理机器。
-
Pod
一组容器,运行在节点中。Kubernetes 中管理的最小计算单元。
-
Kubernetes Clusters
Kubernetes 集群,可以理解为 Master + Nodes。
-
Master
负责管理集群的一个虚拟机或者物理机器。
-
minikube
让我们在本地运行 Kubernetes 的命令行工具。
-
kubectl
与 Master 交互的命令行工具。
-
安装
现在安装 Docker 会自动安装上 kubectl,所以我们只要安装 minikube 就可以了。
minikube 官方安装文档:https://minikube.sigs.k8s.io/docs/start/
选择相应的版本安装完毕后即可。
安装完成后,使用 minikube start 命令来启动集群。
启动需要花点时间安装,启动后,可以通过 minikube status 和 kubectl cluster-info 这两个命令查看集群运行信息:
wuxianmimi docker-complex % minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
kubectl cluster-info
wuxianmimi docker-complex % kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:63259
CoreDNS is running at https://127.0.0.1:63259/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
创建文件夹 kubernetes-simplek8s,并在文件夹内创建2个文件:
client-pod.yaml
# Kubernetes API 的版本
apiVersion
client-node-port.yaml
apiVersion
当我们从外部请求 client 时,请求通过 kube-proxy 发送到 Service,Service 再转发到 Pod 暴露的 3000 端口。
配置文件创建完成后,我们使用 kubectl apply 命令对资源应用配置更改:
kubectl apply -f FILENAME [flags]
运行命令,-f 选项传入对应配置文件:
wuxianmimi kubernetes-simplek8s % kubectl apply -f ./client-pod.yaml
pod/client-pod created
wuxianmimi kubernetes-simplek8s % kubectl apply -f ./client-node-port.yaml
service/client-node-port created
wuxianmimi kubernetes-simplek8s %
随后使用 kubectl get pods 查看正在运行的 Pods 列表:
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
获取 Pod 列表:
wuxianmimi kubernetes-simplek8s % kubectl get pods
NAME READY STATUS RESTARTS AGE
client-pod 1/1 Running 0 2m37s
wuxianmimi kubernetes-simplek8s %
使用 kubectl get services 查看正在运行的服务:
wuxianmimi kubernetes-simplek8s % kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
client-node-port NodePort 10.102.151.149 <none> 3050:31515/TCP 3m6s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 150m
wuxianmimi kubernetes-simplek8s %
接下来就是准备访问服务了,需要访问 minikube 中的服务,只能通过 ip 来访问,使用 minikube ip 获取 ip 地址:
wuxianmimi kubernetes-simplek8s % minikube ip
192.168.49.2
wuxianmimi kubernetes-simplek8s %
访问 http://192.168.49.2:31515/ 可以看到 multi-client 这个页面。
⚠️:这里就会碰到咪咪在文章开头说到的问题,如果你使用 Mac 的话,由于 Docker Desktop 的实现问题,无法使用 IP 地址访问容器。可以在命令行输入 minikube service client-node-port --url 来获取一个本机地址,通过该地址来访问页面。
Kubernetes 启动应用成功!

浙公网安备 33010602011771号