在Kubernetes中部署应用(一) - 命令方式

本文演示如何在 kubernetes 中部署应用,关于如何安装 kubernetes, 请参考 在Ubuntu 18.04 中安装 Kubernetes

部署nginx

在开始实验之前,通过 docker search 命名查找可用的 nginx 镜像,执行:

1
docker search nginx

系统输出:

1
2
3
4
5
6
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx Official build of Nginx. 11922 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1649 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 740 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 75
...

可以看到有官方的镜像,下面我们就使用该官方镜像进行部署。

为部署nginx, 在master节点执行以下命令:

建立一个部署

1
kubectl create deployment nginx --image=nginx

系统显示:

1
deployment.apps/nginx created

立即使用

1
kubectl get deployment

1
2
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx 0/1 1 0 79s

可以看到,当前已经建立了Deployment,但还没有处于 Ready 状态。

转换到工作节点(worker-node), 用 docker images 进行查看, 可以看到,在本地还没有 nginx 的镜像。

过3~5分钟后(视网络快慢),在用docker images 进行查看,就可以看到

1
nginx                                                                         latest              5a3221f0137b        3 weeks ago         126MB

说明 nginx 镜像已经被下载到本地,再运行 kubectl get deployment, 可以看到,部署已经成功了。

1
2
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx 1/1 1 1 2m28s

也可以运行以下命令,查看 deployment 的详情

1
kubectl describe deployments hello-world

系统显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Name:                   nginx
Namespace: default
CreationTimestamp: Sun, 08 Sep 2019 21:38:53 +0000
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-554b9c67f9 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 40m deployment-controller Scaled up replica set nginx-554b9c67f9 to 1

建立一个服务

在 master 节点中运行以下命令:

1
kubectl create service nodeport nginx --tcp 80:80

系统显示:

1
service/nginx created

执行 get service 命令可以参考当前部署的服务:

1
kubectl get svc

系统显示:

1
2
3
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11h
nginx NodePort 10.110.168.249 <none> 80:32034/TCP 47s

也可执行 kubectl describe命令查看细节

1
kubectl describe nginx

然后,可以在 master 机器上执行:

1
curl localhost:32034

可以看到, nginx 默认的 index.html 的内容被输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

也可以在 Host (虚拟机的宿主机)上打开浏览器,访问:

1
http://192.168.43.10:32034/

或是:

1
http://192.168.43.30:32034/

都可以看到 nginx 的默认 index 界面

本文标题:在Kubernetes中部署应用(一) - 命令方式

文章作者:晨星

发布时间:2019年09月09日 - 06:09

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/docker/k8s-deployment-app/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。