Kubernetes 常用命令及应用实例
来源:互联网 发布:域名有哪几部分组成 编辑:程序博客网 时间:2024/05/17 20:13
一. 常用命令
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)。
具体详情请移步kubernetes中文文档
1. 部署
kubectl create -f request.yaml
request.yaml 内容在实例中
2. 删除pod
kubectl delete pod pod名#删除deploymentkubectl delete deploy request
3. 查看pod
kubectl get pod #pod的详细信息(运行在哪个节点)kubectl get pod -o wide#某个pod的详细信息kubectl describe pod request-asdajsd2313-sdf#通过选择器名查询kubectl get pod --selector name=redis
4. 查看日志
kubectl log -f (pod的name)
5. 部署服务
kubectl expose deployment request --type=LoadBanlancer
解释:
kubectl expose 将资源暴露为新的Kubernetes Service
type有三种类型
- ClusterIP:使用一个集群固定IP,这个是默认选项
- NodePort:使用一个集群固定IP,但是额外在每个POD上均暴露这个服务,端口
- LoadBalancer:使用集群固定IP,和NODEPord,额外还会申请申请一个负载均衡器来转发到服务(load balancer )
注意:NodePort 支持TCP和UDN,但是LoadBalancers在1.0版本只支持TCP
6. 查看服务
kubectl get service
7. 更新pod
#第一个requet 是deployment名称,第二个request是request.yaml中定义的镜像名#将镜像设置成最新的#-- record :记录版本用的kubectl set image deployment/request request=hub.yun.paic.com.cn/sunhui227/request:dev1.0.1 --record#显示deployment "request" image updated 则成功#查看更新状态kubectl rollout status deployment/request#查看pod状态kubectl get pod #查看rs状态kubectl get rs
也可以用以下方式更新:
1.使用kubectl apply命令来发起Deployment更新
新建一个yaml文件,改成最新的IMAGES
kubectl apply -f new-request.yaml
2.通过edit命令在线修改deployment:
kubectl edit deployment nginx-deployment
保存即可自动更新
9. 终止升级,继续升级
kubectl rollout pause deployment/requestkubectl rollout resume deployment/request
10. 回滚pod
#回滚到前一版本kubectl rollout undo deployment/request#查看历史版本kubectl rollout history deployment/request#回滚到指定版本-5kubectl rollout undo deployment/request --to-revision=5
11. 收缩,扩容
kubectl scale --replicas=1 deploy/request或kubectl scale deployment request --replicas 10
12. 获取帮助
kubectl scale -h
13. 查看deployment详细信息
kubectl describe deployment
14. 查看ingress
Kubectl get ing#详情Kubectl get ing –o yaml #更新kubectl edit ing test
15. 删除一直处于terminating状态的pod
kubectl get pod | grep Terminating | awk {'print $1'} | xargs kubectl delete pod --grace-period=0 --force
16. 进入POD内部
kubectl exec -it change-1124521512-pmnls /bin/bash
二. 实例
阐述一些实例
1. 编写ingress
通常情况下,service和pod的IP仅可在集群内部访问。集群外部的请求需要通过负载均衡转发到service在Node上暴露的NodePort上,然后再由kube-proxy将其转发给相关的Pod。
而Ingress就是为进入集群的请求提供路由规则的集合
1. 路由到多服务的Ingress
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: testspec: rules: - host: foo.bar.com http: paths: - path: /foo backend: serviceName: s1 servicePort: 80 - path: /bar backend: serviceName: s2 servicePort: 80
2. 虚拟主机Ingress
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: testspec: rules: - host: foo.bar.com http: paths: - backend: serviceName: s1 servicePort: 80 - host: bar.foo.com http: paths: - backend: serviceName: s2 servicePort: 80
2. 编写创建pod的yaml
以request.yaml为例
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: request #名称 namespace: sasda-asdasd123 #空间spec: replicas: 1 #pod个数 template: metadata: labels: run: request #label spec: nodeSelector: itil_cluster: sasda-asdasd123 #集群选择器,指定pod创建在哪个集群中 containers: - env: #环境变量 - name: PROFILE #dockerfile中的启动项目用 value: dev_k8s - name: HOSTNAME #项目资源文件中的eureka用 value: request image: hub.yun.com.cn/sunhui227/request:dev #镜像 imagePullPolicy: Always #每次都去远程拉取 name: request ports: - containerPort: 9090 #项目暴漏出来的端口 protocol: TCP
想了解docker的使用可以查看 Docker 常用命令和使用实例
内容不断更新中~~
- Kubernetes 常用命令及应用实例
- Kubernetes应用实例-GuestBook
- Kubernetes常用命令
- Kubernetes初探:原理及实践应用
- Kubernetes初探:原理及实践应用
- Kubernetes初探:原理及实践应用
- Kubernetes初探:原理及实践应用
- iptables常用命令及应用
- iptables常用命令及应用
- iptables常用命令及应用
- Kubernetes 1.2 新功能介绍:Ingress 原理及实例
- Kubernetes 1.2 新功能介绍:Ingress 原理及实例
- Kubernetes 1.2 新功能介绍:Ingress 原理及实例
- Kubernetes之kubectl常用命令
- Kubernetes学习笔记---常用命令
- Kubernetes常用命令与常见问题
- Kubernetes之kubectl常用命令
- Kubernetes学习笔记---常用命令
- 已知A,B,C为三个元素值递增有序的线性表,要求对表A如下运算:删去那些既在表B中出现又在表C......
- FFmpeg 安装教程
- 常用排序算法稳定性分析
- 批量删除
- 【深度学习】一张图看懂Receptive Field
- Kubernetes 常用命令及应用实例
- 修改Xcode新建类顶部描述
- JavaScript中的引用类型(JS对象)(一)
- 数组输出超大数阶乘
- 归并排序
- Spark架构
- 2017中兴开发者大会测试分会 公开征集议题了!
- jconsole远程linux中的tomcat
- 基于OVSDB协议在SDN控制器ONOS开发配置管理OVS API