Kubernetes应用快速入门
2018-10-01 23:29
603 查看
一、创建pod
1. kuberctl run命令
[root@master manifests]# kubectl run --help Create and run a particular image, possibly replicated. Creates a deployment or job to manage the created container(s). ...... ...... Usage: kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]
简而言之就是kuberctl run命令就是用来创建deployment或者job对象的
2. 创建nginx-deploy
[root@master ~]# kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 deployment.apps/nginx-deploy created [root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deploy-5b595999-49sct 1/1 Running 0 1m
这样就创建了一个nginx-deploy Pod
但是如何访问nginx-deploy提供的服务呢?
可以使用kubectl get pods -o wide查看nginx-deploy容器的IP
[root@master ~]# kubectl get pods nginx-deploy-5b595999-49sct -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-deploy-5b595999-49sct 1/1 Running 0 9m 10.244.2.26 node2
然后在集群内部使用curl命令访问:
[root@master ~]# curl http://10.244.2.26
但是pod是有生命周期的,当pod宕掉之后,pod的IP会重新被分配,那么该如何访问pod的固定端点呢?好在kubernetes提供了service作为pod的固定端点用于用户访问pod
二、创建Service
1. Service访问后端Pod示意图
2. kubectl expose命令
[root@master ~]# kubectl expose --help Expose a resource as a new Kubernetes service. Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector for that resource as the selector for a new service on the specified port. A deployment or replica set will be exposed as a service only if its selector is convertible to a selector that service supports, i.e. when the selector contains only the matchLabels component. Note that if no port is specified via --port and the exposed resource has multiple ports, all will be re-used by the new service. Also if no labels are specified, the new service will re-use the labels from the resource it exposes. Possible resources include (case insensitive): pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs) ...... ...... Usage: kubectl expose (-f FILENAME | TYPE NAME) [-- port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]
简而言之,kubectl expose命令就是用来创建service资源对象的
3. 创建service
[root@master ~]# kubectl expose deployments nginx-deploy --name=nginx-deploy --port=80 --target-port=80 --protocol=TCP service/nginx-deploy exposed
这样将nginx-deploy以service的形式暴露出去了
[root@master ~]# kubectl get svc -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-deploy ClusterIP 10.107.30.182 <none> 80/TCP 1m run=nginx-deploy
4. 通过service访问pod
[root@master ~]# curl http://10.107.30.182
上面的IP是service的IP
三、扩缩容
1. 扩容
[root@master ~]# kubectl scale --replicas=2 deployment nginx-deploy deployment.extensions/nginx-deploy scaled
2. 缩容
[root@master ~]# kubectl scale --replicas=1 deployment nginx-deploy deployment.extensions/nginx-deploy scaled
四、滚动升级
[root@master ~]# kubectl set image deployment nginx-deploy nginx-deploy=nginx:latest deployment.extensions/nginx-deploy image updated
阅读更多
相关文章推荐
- Hadoop基础教程-第2章 Hadoop快速入门(2.5 WordContent简单应用)
- Kubernetes入门指南:部署一个Node.js Docker应用 — SitePoint
- Kubernetes1.3新特性:集群联盟-在全球快速部署和管理应用
- 快速入门系列--MVC--03控制器和IOC应用
- 快速入门系列--MVC--03控制器和IOC应用
- Java - 写给 Android 应用开发者的 JNI 快速入门指北
- Tensroflow应用快速入门(一)
- Maven快速入门及应用
- 【ASP.NET Core快速入门】(十一)应用Jwtbearer Authentication、生成jwt token
- go语言快速入门:模板应用(15)
- [Android应用开发] 01.快速入门
- 快应用quickapp快速入门教程 by五个半柠檬2 3ff0
- 中小型研发团队架构实践五:Redis快速入门及应用
- Redis快速入门及应用
- Eclipse快速入门:远程调试Java应用
- Tensorflow应用快速入门(二)
- 分布式应用框架Akka快速入门
- ajax的简单应用之快速入门
- Android-应用开发-快速入门(一)
- go语言快速入门:模板应用(13)