# 1、启动集群
开始我们需要启动一个K8s集群。下面的命令启动集群组件并且下载Kubectl CLI。
```
minikube start --wait=false
```
等待节点变成Ready状态,通过命令检查:
```
kubectl get nodes
```
# 2、kubectl Run
run命令根据指定的参数,如镜像或者副本数,创建一个部署(deployment)。这个部署被发送到Kubernetes主服务器,由它启动所需的Pods和容器。kubectl run 类似于 docker run,但是集群层次的。
这个命令的格式是 kubectl run [部署名称] \[属性\]
## Task
下面的命令会启动一个叫http的部署。它将会依据docker镜像katacode/docker-http-server:lastest启动一个容器。
```
kubectl run http --image=katacoda/docker-http-server:latest --replicas=1
```
然后你可以使用kubectl来查看部署的状态:
```
kubectl get deployments
```
要了解K8s做了什么,可以describe这个部署过程。
```
kubectl describe deployment http
```
这个描述包含了有多少个副本是可用的,指定的标签以及部署相关的事件。这些事件将突出显示可能发生的任何问题和错误。
在下一步我们将会暴露运行中的服务(service)。
# 3、Kubectl Expose
当部署被创建了,我们可以使用kubectl来创建一个服务来暴露pods的特定端口。
暴露最近部署的http部署通过kubectl expose。这个命令允许你定义service的不同参数并且怎么暴露部署。
Task
使用下面的命令暴露容器的80端口在宿主机上8000,绑定到宿主机的外部ip。
```
kubectl expose deployment http --external-ip="172.17.0.83" --port=8000 --target-port=80
```
然后你可以ping这个宿主机,并且看到来自HTTP service的结果。
```
curl http://172.17.0.83:8000
```
# 4、Kubectl Run and Expose
kubectl run 可以使用一个单一的命令创建一个部署并且暴露它。
## Task
使用命令创建第二个http service暴露在8001端口。
```
kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001
```
你可以访问它,使用地址:
```
curl http://172.17.0.83:8001
```
在背后,这通过Docker Port映射暴露了Pod。结果你不会看到services列出。
```
kubectl get svc
```
查看详细你可以使用
```
docker ps | grep httpexposed
```
## Pause容器
运行上面的命令你会看到暴露的是Pod的端口,而不是http容器自己的。Pause容器是负责定义Pod的网络。Pod中的其他的容器共享相同的网络命名空间。这提高了网络性能,并允许多个容器通过同一个网络接口进行通信。
# 5、伸缩容器
当我们部署运行时,我们可以使用kubectl来伸缩副本的数量。
伸缩部署将会请求K8s来启动额外的Pods。这些Pods将会使用暴露的service自动的负载均衡。
## Task
kubectl sacle命令允许我们针对特定的部署或者复制控制器调整Pod运行的数量。
```
kubectl scale --replicas=3 deployment http
```
列出所有的pod,你应该能看到http部署有3个运行中的pod。
一旦pod启动,它将会被添加到负载均衡服务中。通过describe service你可以看到端点和包含的相关Pod。
```
kubectl describe svc http
```
请求service将会请求不同的node处理这个请求。
```
curl http://172.17.0.83:8000
```
- 前言
- 安装minikube
- 启动一个单节点的Kubernetes集群
- 启动一个多节点的集群使用kubeadm
- 使用kubectl部署容器
- 使用YAML部署容器
- 在K8s上部署Guestbook(留言簿)示例
- K8s网络介绍
- 创建Ingress路由
- Liveness(存活探针)、Readiness(就绪探针)和健康检查
- 使用CRI-O和kubeadm开始
- 在K8s上运行一个有状态服务
- 管理K8s中的秘钥和密码
- 使用Kompose部署Docker Compose文件
- 在Kubernates上从源代码部署一个服务
- 使用Heptio Velero备份和恢复
- Helm包管理器
- 基本的K8s的可观察性(监控)
- 使用EFK记录日志
- 在K8s上安装Weave Scope