赣州做网站的公司有哪家好,怎么查找网站,成华区住房和城乡建设厅网站,漳州建设局网站生命周期管理
1. 创建
1. 创建资源 kubectl run 创建并运行一个或多个容器镜像。*创建一个deployment或job来管理容器*。
语法#xff1a;kubectl run NAME --imageimage [–env“keyvalue”] [–portport] [–replicasreplicas] [–dry-runbool] [–overridesinline-jso…
生命周期管理
1. 创建
1. 创建资源 kubectl run 创建并运行一个或多个容器镜像。*创建一个deployment或job来管理容器*。
语法kubectl run NAME --imageimage [–env“keyvalue”] [–portport] [–replicasreplicas] [–dry-runbool] [–overridesinline-json] [–command] – [COMMAND] [args…]
kubectl run nginx --replicas3 --labelsapp-nginx-example --imagenginx:1.10 --port80kubectl create
kubectl create deployment nginx --imagenginx
# 根据yaml配置文件创建资源对象
kubectl create -f zookeeper.yaml
# 根据yaml配置文件一次创建Service和RC
kubectl create -f my-service.yaml -f my-rc.yaml
# 创建名称空间
kubectl create namespace bigdatakubectl apply
kubectl apply deployment nginx --imagenginx
# 使用yaml文件创建资源
kubectl apply -f zookeeper.yaml2. 标签操作
查询标签
kubectl get nodes --show-labels添加****标签
# 为指定节点添加标签
kubectl label nodes nodeName labelNamevalue
# 为指定Pod添加标签
kubectl label pod podName -n nsName labelNamevalue修改****标签
# 修改节点标签值
kubectl label nodes nodeName
# 修改Pod标签值需要overwrite参数
kubectl label pod podName -n nsName labelNamevalue --overwrite删除****标签
# 为指定节点删除标签
kubectl label nodes nodeName labelName-
# 删除Pod标签
kubectl label pod podName -n nsName labelName-2. 查看
# 查看集群状态
kubectl get cs# 查看Pod
kubectl get pods
kubectl get pod
kubectl get po# 查看指定名称Pod
kubectl get pod mynginx
kubectl get pod/mynginx# 同时查看多个资源
kubectl get deploy,pods# 查看Pod端口信息
kubectl get pod,svc# 特定命名空间资源查看
kubectl get pods -n bigdata# 查看所有命名空间下的pod信息
kubectl get pod --all-namespaces
kubectl get pods --A# 获取Pod运行在哪个节点上的信息
kubectl get pod -o wide# 显示Pod标签信息
kubectl get pods --show-labels# 查看特定标签的Pod
kubectl get pods -l appexample# 以JSON格式显示Pod的详细信息
kubectl get pod podName -o json# 查看RS
kubectl get replicasets -o wide# 查看Deployments
kubectl get deployments -o wide# 查看ip和端口也叫端点
kubectl get ep# 查看事件
kubectl get evyaml方式
# 以yaml格式显示Pod的详细信息
kubectl get pod podName -o yaml
kubectl get pod -f pod.yaml
kubectl get pod -f pod1.yaml -f pod2.yaml# 用get生成yaml文件
kubectl get deploy/nginx --export -o yaml my-deploy2.yaml# 查看资源子节点详情
kubectl explain pods.spec.containers# 用run命令生成yaml文件dry-run尝试运行但不会生成可用于检查语法错误
kubectl run nginx --imagenginx:latest --port80 --replicas3 --dry-run
# 尝试运行并生成yaml文件
kubectl run nginx --imagenginx:latest --port80 --replicas3 --dry-run -o yaml my-deploy.yaml3. 发布
# 暴露端口
kubectl expose deployment nginx --port80 --typeNodePort
kubectl expose deployment nginx --port80 --typeNodePort --target-port80 --namenginx-service# 输出为yaml文件推荐
kubectl expose deployment nginx --port80 --typeNodePort --target-port80 --nameweb1 -o yaml web1.yaml
kubectl expose deployment nginx -n bigdata --port80 --typeNodePort4. 故障排查
1. 资源详情排查
# 显示Node的详细信息
kubectl describe nodes nodeNamePrefix
# 显示Pod的详细信息
kubectl describe pods podNamePrefix
# 显示由RC管理的Pod的信息
kubectl describe pods rcNamePrefix2. 资源日志排查
# 容器日志查看
kubectl logs zk-0
kubectl logs zk-0 -n bigdata
# 跟踪查看容器的日志相当于tail -f命令的结果
kubectl logs -f pod-name -c container-name3. 进入资源容器
# 进入容器
kubectl exec -it podName -n nsName /bin/sh
kubectl exec -it podName -n nsName /bin/bash5. 更新
1. 版本更新
kubectl set image deployment/nginx nginxnginx:1.15
# 记录更新操作命令以便后续查看变更历史
kubectl set image deployment/nginx nginxnginx:1.15 --record2. 编辑更新
kubectl edit deployment/nginx3. 滚动更新
kubectl rolling-update frontend-v1 frontend-v2 --imageimage:v2
kubectl rolling-update frontend --imageimage:v2
kubectl rolling-update frontend-v1 frontend-v2 --rollback4. 替换更新
kubectl replace -f zookersts.yaml5. 扩缩容
kubectl scale deployment nginx --replicas106. 回滚
# 查看更新过程
kubectl rollout status deployment/nginx --namespacensName
# 如果更新成功, 返回值为0
kubectl rollout status deployment nginx-deployment --watchfalse | grep -ic waiting# 查看变更历史版本信息
kubectl rollout history deployment/nginx
kubectl rollout history deployment/nginx --revision3 --namespacensName# 终止升级
kubectl rollout pause deployment/nginx --namespacensName# 继续升级
kubectl rollout resume deployment/review-demo --namespacensName# 回滚版本
kubectl rollout undo deployment/nginx --namespacensName
kubectl rollout undo deployment/nginx --to-revision3 --namespacensName7. 清理
# 删除资源
kubectl delete deploy/nginx
kubectl delete svc/nginx-service# 删除所有Pod
kubectl delete pods --all# 删除所有包含某个label的Pod和Service
kubectl delete pod,service -l namelabelName# 基于yaml定义的名称删除
kubectl delete -f pod.yaml# 删除指定命名空间
kubectl delete ns nsName# 删除指定命名空间的资源
kubectl delete pod zk-0 -n bigdata
kubectl delete pod --all -n bigdata# 删除计时观察删除总耗时
time -p kubectl delete pod podName# 强制删除默认30s
# 指定删除延迟时间0s整体删除时间会明显降低
kubectl delete pod podName -n nsName --grace-period0 --force
# 以下两行命令功能相同grace-period1等价于now立即执行
kubectl delete pod podName -n nsName --grace-period1
kubectl delete pod podName -n nsName --now
# 删除所有Pods
kubectl delete pods --all --force --grace-period0常用操作命令
类型命令描述基础命令create通过文件名或标准输入创建资源expose将一个资源公开为一个新的Servicerun在集群中运行一个特定的镜像set在对象上设置特定的功能get显示一个或多个资源explain文档参考资料edit使用默认的编辑器编辑资源delete通过文件名、标准输入、资源名称或标签选择器来删除资源部署命令rollout管理资源的发布rolling-update对给定的复制控制器滚动更新scale扩容或缩容Pod、Deployment、ReplicaSet、RC或Jobautoscale创建一个自动选择扩容或缩容并设置Pod数量集群管理命令certificate修改证书资源cluster-info显示集群信息top显示资源CPU、Memory、Storage使用。需要Heapster运行cordon标记节点不可调度uncordon标记节点可调度drain维护期间排除节点驱除节点上的应用准备下线维护taint设置污点属性故障诊断和调试命令describe显示特定资源或资源组的详细信息logs在一个Pod中打印一个容器日志。如果Pod只有一个容器容器名称是可选的attach附加到一个运行的容器exec执行命令到容器port-forward转发一个或多个本地端口到一个Podproxy运行一个proxy到Kubernetes API Servercp拷贝文件或目录到容器auth检查授权高级命令apply通过文件名或标准输入对资源应用配置patch使用补丁修改、更新资源的字段replace通过文件名或标准输入替换一个资源convert不同的API版本之间转换配置文件设置命令label更新资源上的标签annotate更新资源上的注释completion用于实现kubectl工具自动补全其他命令api-versions打印支持的API版本config修改kubeconfig文件用于访问API比如配置认证信息help所有命令帮助plugin运行一个命令行插件version打印客户端和服务版本信息
1. 获取帮助
# 检查kubectl是否安装
rpm -qa | grep kubectl
# 获取kubectl及其子命令帮助方法
kubectl --help
kubectl create --help1. Worker上执行kubectl
# Worker节点上执行
mkdir -p ~/.kube
scp master1:/root/.kube/config ~/.kube/
# 验证查看K8s集群节点列表
kubectl get nodes2. api相关操作命令
# 查看api版本信息
kubectl api-versions
# 查看api资源列表
kubectl api-resources3. K8s相关进程操作命令
netstat -lntp | grep kube-proxy
netstat -tnlp | grep kubelet4. 节点操作命令
加入新节点
# 加入新节点在master节点上执行将输出再到新节点上执行
kubeadm token create --print-join-command驱逐节点
# 驱逐节点的Pod
kubectl drain nodeName节点下线
# 将节点标记为不可调度不影响现有Pod注意daemonSet不受影响
kubectl cordon nodeName节点上线
# 维护结束节点重新投入使用
kubectl uncordon nodeName污点设置
# 设置污点
kubectl taint nodes nodeName key1value1:NoSchedule
kubectl taint nodes nodeName key1value1:NoExecute
kubectl taint nodes nodeName key2value2:NoSchedule
# 删除污点
kubectl taint nodes nodeName key1:NoSchedule-
kubectl taint nodes nodeName key1:NoExecute-
kubectl taint nodes nodeName key2:NoSchedule-
# 查看污点详情
kubectl describe nodes nodeName资源创建实例
Namespace
命令行方式
kubectl create namespace bigdatayaml方式
vi ns-test.yaml编排文件如下
apiVersion: v1
kind: Namespace
metadata:name: bigdata执行yaml文件
kubectl apply -f ns-test.yaml验证
kubectl get namespaces
kubectl get namespace
kubectl get ns清除
kubectl delete -f ns-test.yaml
kubectl delete ns bigdataPod
命令行方式
未提供直接创建Pod的命令命令行方式一般通过创建Deployment、RC、RS等资源间接创建Pod。
yaml方式
vi pod-test.yaml编排文件如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:containers:- name: nginx-containersimage: nginx:latest执行yaml文件
kubectl apply -f pod-test.yaml验证
kubectl get pods
kubectl get pod
kubectl get po
kubectl describe pod pod1
kubectl get pods -o wide
curl http://172.16.189.68清除
kubectl delete -f pod-test.yaml
kubectl delete pod pod1Service
命令行方式
kubectl run nginx-app --imagenginx:latest --image-pull-policyIfNotPresent --replicas2
kubectl expose deployment.apps nginx-app --typeClusterIP --target-port80 --port83参数说明 expose创建service。 deployment.apps控制器类型。 nginx-app应用名称也是service名称。 **–type**ClusterIP指定service类型。 –target-port80指定Pod中容器端口。 –port80指定service端口。
验证
kubectl get service
kubectl get svc
kubectl get endpoints
kubectl get ep
curl http://10.104.173.230:83
kubectl get all清除
kubectl delete service nginx-app
kubectl delete svc nginx-appyaml方式
vi nginx-service.yaml编排文件如下
---
apiVersion: apps/v1
kind: Deployment
metadata: name: nginx-applabels:app: nginx
spec: replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginxappimage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80---
apiVersion: v1
kind: Service
metadata:name: nginx-app-svclabels:name: nginx-app-svc
spec:type: ClusterIPports: - protocol: TCPport: 83targetPort: 80selector:app: nginx---
apiVersion: v1
kind: Service
metadata:name: nginx-app-svc2labels:name: nginx-app-svc2
spec:type: NodePortports: - protocol: TCPport: 83targetPort: 80nodePort: 30083selector:app: nginx执行yaml文件
kubectl apply -f nginx-service.yaml验证
kubectl describe deployment nginx-app
kubectl describe svc nginx-app-svc
kubectl get service
kubectl get svc
kubectl get endpoints
kubectl get ep
# nginx-app-svc
curl http://10.107.141.109:83
# nginx-app-svc2
curl http://192.168.216.100:30083
# 查看k8s集群指定端口的侦听状态
ss -anput | grep :30083
kubectl get all清除
kubectl delete -f nginx-service.yaml
kubectl delete service nginx-app-svc
kubectl delete svc nginx-app-svc常用控制器
1. Deployment
命令行方式
kubectl run nginx-app --imagenginx:latest --image-pull-policyIfNotPresent --replicas2参数说明 nginx-appDeployment控制器类型的应用名称。 –imagenginx***latest应用运行的Pod中的Container所使用的镜像。 IfNotPresentContainer容器镜像下载策略如果本地有镜像使用本地如果本地没有镜像下载镜像。 **–replicas**2是指应用运行的Pod共计2个副本这是用户的期望值Deployment控制器中的ReplicaSet控制器会一直监控此应用运行的Pod副本状态如果数量达不到用户期望就会重新拉起一个新的Pod会让Pod数量一直维持在用户期望值数量。
验证
kubectl get deployment.apps
kubectl get deployment
kubectl get deploy
kubectl get replicaset
kubectl get rs
kubectl get all清除
kubectl delete deployment nginx-appyaml方式
vi nginx-deployment.yaml编排文件如下
apiVersion: apps/v1
kind: Deployment
metadata: name: nginx-applabels:app: nginx
spec: replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginxappimage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80执行yaml文件
kubectl apply -f nginx-deployment.yaml验证
kubectl get deployment.apps
kubectl get deployment
kubectl get deploy
kubectl get replicaset
kubectl get rs
kubectl get all
kubectl describe deployment nginx-app
kubectl get pods -o wide
curl http://172.16.189.77
curl http://172.16.235.138清除
kubectl delete -f nginx-deployment.yaml
kubectl delete deployment nginx-app2. ReplicaSet
命令行方式
yaml方式
3. StatefulSet
命令行方式
yaml方式
4. DaemonSet
命令行方式
yaml方式
5. Job
命令行方式
yaml方式
6. CronJob
命令行方式
yaml方式
操作命令补充说明
1. create和apply的异同点
create
先删除所有现有的东西重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的。
apply
根据配置文件里面列出来的内容升级现有的。所以yaml文件的内容可以只写需要升级的属性。apply命令将配置应用于资源。 如果资源不在那里那么它将被创建。 从执行的角度来看如上所示在kubectl create和kubectl apply之间第一次创建资源时没有区别。 但是第二次kubectl create会抛出错误。简单来说如果在单个文件上运行操作以创建资源则create和apply基本相同。 但是 apply允许您在目录下的多个文件上同时创建和修补。