Kubernetes常用命令及应用实例
程序员文章站
2022-04-11 22:02:32
一. 常用命令
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubern...
一. 常用命令
注意:NodePort 支持TCP和UDN,但是LoadBalancers在1.0版本只支持TCP 6. 查看服务
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)。
1. 部署kubectl create -f request.yaml
request.yaml 内容在实例中
2. 删除podkubectl delete pod pod名 #删除deployment kubectl delete deploy request3. 查看pod
kubectl get pod #pod的详细信息 kubectl get pod -o wide #某个pod的详细信息 kubectl describe pod request-asdajsd2313-sdf #通过选择器名查询 kubectl get pod --selector name=redis4. 查看日志
kubectl log -f (pod的name)5. 部署服务
kubectl expose deployment request --type=LoadBanlancer
解释:
kubectl expose 将资源暴露为新的Kubernetes Service
type有三种类型
注意:NodePort 支持TCP和UDN,但是LoadBalancers在1.0版本只支持TCP 6. 查看服务
kubectl get service7. 更新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 rs9. 终止升级,继续升级
kubectl rollout pause deployment/request kubectl rollout resume deployment/request10. 回滚pod
#回滚到前一版本 kubectl rollout undo deployment/request #查看历史版本 kubectl rollout history deployment/request #回滚到指定版本-5 kubectl rollout undo deployment/request --to-revision=511. 收缩,扩容
kubectl scale --replicas=1 deploy/request 或 kubectl scale deployment request --replicas 1012. 获取帮助
kubectl scale -h13. 查看deployment详细信息
kubectl describe deployment14. 查看ingress
Kubectl get ing #详情 Kubectl get ing –o yaml #更新 kubectl edit ing test二. 实例
阐述一些实例
1. 编写ingress通常情况下,service和pod的IP仅可在集群内部访问。集群外部的请求需要通过负载均衡转发到service在Node上暴露的NodePort上,然后再由kube-proxy将其转发给相关的Pod。
而Ingress就是为进入集群的请求提供路由规则的集合
1. 路由到多服务的Ingress
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test spec: 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/v1beta1 kind: Ingress metadata: name: test spec: rules: - host: foo.bar.com http: paths: - backend: serviceName: s1 servicePort: 80 - host: bar.foo.com http: paths: - backend: serviceName: s2 servicePort: 802. 编写创建pod的yaml
以request.yaml为例
apiVersion: extensions/v1beta1 kind: Deployment metadata: 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
上一篇: Android面试知识点解析
下一篇: 一咬牙的事