有很多方法可以让Kubernete变得更加简单。多亏了MicroK8s和Portainer,我们不必一直应对挑战。但是,即使你可以开始使用Portainer进行Kubernetes的点击操作,但在某些情况下,你可能希望能够从命令行工作——比如你被要求将应用程序或服务部署到Kubernetes集群,但找不到Portiner GUI。
如果出现这种情况,你需要知道如何控制命令行界面并完成任务。我们将运行一个简单的NGINX部署,并从命令行执行所有操作。
要求
你需要一个正在运行的Kubernetes集群,在MicroK8s的帮助下,它非常容易部署。现在,我们演示Kubernetes的MicroK8s版本,所以命令会有点不同,因为它们将使用MicroK8s和kubectl。
这就是所需要的。让我们开始部署。
如何创建第一个部署
我们要做的第一件事是登录Kubernetes控制器节点。登录后,使用以下命令验证你的节点是否仍然连接:
microk8s kubectl get nodes
该命令的输出应该包含如下内容:
k8s3 Ready <none> 23d v1.24.8–2+1dda18a15eea38
k8s2 Ready <none> 23d v1.24.8–2+1dda18a15eea38
k8s1 Ready <none> 23d v1.24.8–2+1dda18a15eea38
现在,你确定节点都处于就绪状态,请使用以下命令创建一个新目录:
mkdir ~/deployment
使用以下命令切换到新创建的目录:
cd ~/deployment
使用以下内容创建新的部署YAML文件:
nano nginx–deployment.yml
在该文件中,粘贴以下内容:
apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentlabels:app: nginxspec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:– name: nginximage: nginx:1.7.9ports:– containerPort: 80
上述文件的大部分内容应该是不言自明的,但有一些部分需要密切关注,例如:
apiVersion——详细说明将使用的API版本。
kind——详细说明正在创建的对象的类型。
元数据——帮助识别对象的数据。
spec——希望的对象状态。
使用[Ctrl]+[X]键盘快捷键保存并关闭文件。
使用以下命令应用新创建的YAML文件:
1 |
microk8s kubectl apply –f nginx–deployment.yml |
输出应显示如下内容:
deployment.apps/nginx–deployment created
使用以下命令验证部署:
1 |
microk8s kubectl get deployments |
你应该在输出中看到类似的内容:
nginx–deployment 2/2 2 2 5m32s
很棒,继续前进。
现在,你需要了解NGINX pod可以访问的IP地址。需要记住的一点是,第一次部署将仅对本地网络可用。我们将在下一次更进一步,使其在集群之外可用。
要查找NGINX pod的IP地址,请发出以下命令:
microk8s kubectl describe pods nginx
在输出中,应该看到如下内容:
IPs:
IP: 10.1.219.7
我们的NGINX pod在IP地址10.1.219.7上运行。我们可以通过从控制器节点运行以下命令来测试:
curl 10.1.219.7
输出应该如下所示:
<!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>
如果控制器节点具有GUI,则可以打开web浏览器并将其指向http://10.1.219.7并查看打印的NGINX欢迎页面。
现在,如果你将Portiner安装到Microk8s集群,那么可以登录Portiner,转到Applications,看到我们的nginx部署可用(图1)。
图1:nginx部署正在运行。
单击列表,你将看到pod已复制到两个节点(图2)。
图2:NGINX部署不仅在单个节点上运行,而且在两个节点上运行。
当然,这不是很有用,因为无法从集群外部访问应用程序。没关系,下一次我们将回到Portiner,了解部署同一个NGINX应用程序有多容易,让它只在集群外部可见。即使使用Portiner这样的工具部署这样的应用程序要容易得多,但知道如何从命令行进行部署总是很好的。
原文链接:https://thenewstack.io/kubernetes-app-deployment-from-the-command-line/