k8s操作

Kubernetes集群搭建完成后会伴随着对其编排的困扰,现针对kubectl 的操作做一些总结(有待完善)

kubectl命令的使用方法:

kubectl --help

kubectl <command> --help

kubectl 配置位于 ~/.kube/config

常用命令:

创建:kubectl create --help

kubectl create -f filename.yaml (创建资源,资源类型取决于文件内容,文件内写的pod即创建pod,文件内写的deployment即创建deployment)

kubectl replace -f filename [--force]  (重建资源,支持JSON和YAML格式。如果替换当前资源,则必须提供完整的资源规范,可以通过以下命令获取:kubectl get TYPE NAME -o yaml)

示例:kubectl replace -f ./pod.json

cat pod.json | kubectl replace -f -(根据传入的 JSON 替换 pod )

kubectl replace --force -f ./pod.json (强制替换。删除原有资源,然后重新创建资源)

kubectl get pod podname -o yaml | sed 's/\(image: myimage\) : .*$/\1:v4/' | kubectl replave -f -

 

删除:kubectl delete --help

kubectl delete -f filename (根据文件删除资源)

kubectl delete pod podname (根据资源名称产出资源)

kubectl delete rc rcname

kubectl delete service servicename

kubectl delete pod --all (产出全部类型的资源)

 

资源动态伸缩:kubectl scale --help

kubectl scale rz php --replicas=5 (根据资源类型指定资源进行动态伸缩)

kubectl scale deployment redis-slave --replicas=5

kubectl scale --replicas=2 -f redis-slave-deployment.yaml  (根据文件对资源进行动态伸缩)

 

滚动升级:kubectl rolling-update --help

kubectl rolling-update php-master -f php-master-controller-v2.yaml (配置文件滚动升级)

kubectl rolling-update php-master --image=php-master:2.0 (命令升级)

kubectl rolling-update php-master --image=php=master:1.0 --rollback (pod版本回滚)

 

 

查看:kubectl get --help

kubectl cluster-info (查看 k8s 集群状态)

kubectl get nodes (查看集群内的 node 节点信息)

kubectl get pods (查看运行的 pods )

kubectl get pods -o wide (查看 pods 详情)

kubectl get deployment (查看运行的 deployment )

kubectl get deployment -o wide (查看 deployment 详情)

kubectl get svc (查看 service )

kubectl get svc -o wide (查看 service 详情)

kubectl get ns (获取所有命名空间)

kubectl get all -o wide --all-namespaces (查看所有命名空间下的所有信息)

kubectl get all -n default (查看指定命名空间下所有服务信息,其中 default 为命名空间的名称)

kubectl get pods -n default (指定命名空间下获取某种类型对象的所有信息,default 为命名空间名称)

kubectl get daemonset --all-namespaces (查看所有 namespace 下的 daemonset ,其中DaemonSet kube-flannel-ds和kube-proxy分别负责在每个节点上运
行flannel和kube-proxy组件,因为flannel和kube-proxy属于系统组件,需要在命令行中通过--
namespace=kube-system指定namespace kube-system。若不指定,则只
返回默认namespace default中的资源)

kubectl get ingress (查看集群中的 ingress )

kubectl get pods -A -o wide | grep nodeip (查看一台 node 主机上的所有 pod 资源)

 

 

标签:label (kubectl label --help)

kubectl label node nodename key=value (给 node 节点添加一个 label )

kubectl get node --show-labels (查看节点的 label )

kubectl label node nodename key- (将 node 节点的 label 删除 )

 

日志:logs

kubectl logs -f pod-name (查看容器中输出的日志)

kubectl logs -f podname -c containername (跟踪查看pod内某个容器的日志,相当于tail -f 或 docker logs -f )

kubectl  exec  pod-name    cmd: ---在podname中执行cmd命令,该命令用 '' ;
kubectl  exec  pod-name  -c    containername  命令: ---在podname中的容器containername中执行命令;
 kubectl exec -it   common-1-controller-786c6c76dd-lqzc8  -c  common-0     /bin/sh   -n ns-2      进入pod common-1-controller-786c6c76dd-lqzc8内的容器common-0中,执行一些命令;
/ # date
Fri Sep 28 15:01:12 CST 2018
/ # 

kubectl exec php-p-6c6965c645-bhz6b env (查看指定 pod 的环境变量)

kubectl exec -it redis-master-123456789-abcde /bin/bash (进入 pod 启动的容器 )

kubectl describe pods php-p-6c6965c645-bhz6b -n default (查看 pods 中的容器)

kubectl describe service/kubernetes-dashboard --namespace="kube-system"

kubectl describe pods/kubernetes-dashboard-123456789-abcde --namespace="kube-system"  (指定类型查看)

kubectl describe pod nginx-12345 (查看 pod 详细信息)

 

查看资源使用情况: kubectl top --help/kubectl describe --help

kubectl top node (查看节点的资源使用情况)

kubectl top pod (查看pod 的资源使用情况)

kubectl api-resources (获取API的资源)

kubectl api-version (查看 API 版本信息)

kubectl describe nodes (查看所有 node 的资源)

etcdctl cluster-health (检查网络集群健康状态)

etcdctl --endpoints=https://172.26.60.221:2379 cluster-health (带有安全认证检查网络集群健康状态)

etcdctl member list

etcdctl set /k8s/network/config '{ "Network": "10.1.0.0/16"}'

etcdctl get /k8s/network/config

 

 

=======================================

负载均衡处理组件,例如ingress
外部通过ingress访问http请求url后面的服务;ingress controller是以pod的形式存在的;

逻辑:

1、监听apiserver,获取全部ingress的定义

2、基于ingress的定义,生成nginx需要的配置文件/etc/nginx/nginx.conf

3、nginx -s reload 命令,重新加载nginx.conf配置文件的内容

nginx-ingress-controller镜像来创建ingress controller,该ingress controller是以daemonset的形式进行创建,在每个node上都将启动一个nginx服务。

查看ingress的镜像文件:

docker images |grep ingress

docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.27.1

灰度升级时,新建deployment之后,会新建一个replicaset控制副本数。deployment实际是replica controller的升级版:

=========================================

灰度升级
查看升级过程中deployment的更新过程

kubectl rollout status  deployment/deploy-tsing-canary  -n ns-tsing 

deployment "deploy-tsing-canary" successfully rolled out

可以编辑deployment的镜像版本,引起升级:

kubectl edit   deployment/deploy-tsing-canary  -n ns-tsing 

检查整个deployment部署的历史记录:

kubectl rollout history deployment/deploy-tsing-canary  -n ns-tsing

撤销本次发布回滚到上一个部署版本:
kubectl rollout undo deployment/deploy-tsing-canary  -n ns-tsing

暂停deployment的更新:

kubectl rollout pause deployment/deploy-tsing-canary  -n ns-tsing

 

在新建deployment后,最好加上—record,在查看history时能看到历史记录。

--version,能看到更新的每个版本。

查看命令的子命令方法:

kubectl rollout 

Available Commands:

  history     View rollout history

  pause       Mark the provided resource as paused

  restart     Restart a resource

  resume      Resume a paused resource

  status      Show the status of the rollout

  undo        Undo a previous rollout

 

获取endpoints=popip+contaninerport

 kubectl get endpoints -n ns-tsing 

 

 

参考:

http://docs.kubernetes.org.cn/468.html

posted @ 2021-05-11 17:52  木易-故事里的人  阅读(226)  评论(0编辑  收藏  举报