网站飘动石景山网站制作

当前位置: 首页 > news >正文

网站飘动,石景山网站制作,上海公上海公司网站建设,南昌百恒信息技术有限公司命令详解 kubectl是官方的CLI命令行工具#xff0c;用于与 apiserver进行通信#xff0c;将用户在命令行输入的命令#xff0c;组织并转化为 apiserver能识别的信息#xff0c;进而实现管理k8s各种资源的一种有效途径

  1. 帮助 2. 查看版本信息 3. 查看资源对象等 查看No…命令详解 kubectl是官方的CLI命令行工具用于与 apiserver进行通信将用户在命令行输入的命令组织并转化为 apiserver能识别的信息进而实现管理k8s各种资源的一种有效途径

  2. 帮助 2. 查看版本信息 3. 查看资源对象等 查看Node状态 查看Master组件状态 列出K8s所有资源 查看集群接口信息 查看apiserver聚合层注册信息 查看API的版本 查看某个node的详细信息 4. kubectl自动补齐 yum -y install bash-completion source /usr/share/bash-completion/bash_completion echo source (kubectl completion bash) ~/.bashrc现在 5. Namespaces namespace是k8s系统中的一种非常重要的资源它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下k8s集群中的所有的pod都是可以相互访问的。但是在实际中可能不想让两个pod之间进行互相的访问此时就可以将两个pod划分到不同的namespace下。k8s将通过将集群内部的资源分配到不同的namespace中可以形成逻辑上的”组“以方便不同的组的资源进行隔离使用和管理可以通过k8s的授权机制将不同的namespace交给不同租户进行管理这样就实现了多租户的资源隔离。 此时还能结合k8s的资源配额机制限定不同租户能占用的资源例如cpu使用量内存使用量等来实现租户可用资源的管理。 5.1 查看所有的ns 默认创建的namespace [rootmaster ~]# kubectl get namespace NAME STATUS AGE default Active 41h #所有未指定namespace的对象都会被分配在default命名空间 kube-node-lease Active 41h #集群节点之间的心跳维护v1.13开始引入 kube-public Active 41h #此命名空间下的资源可以被所有人访问包括未认证用户 kube-system Active 41h #所有由k8s系统创建的资源都处于这个命名空间[rootmaster ~]# kubectl get ns NAME STATUS AGE default Active 18h kube-node-lease Active 18h kube-public Active 18h kube-system Active 18h kubernetes-dashboard Active 18h5.2 查看指定的ns #命令kubectl get ns ns名称 -o 格式参数 #k8s支持的格式很多比较常见的是wide、json、yaml [rootmaster ~]# kubectl get ns default -o yaml apiVersion: v1 kind: Namespace metadata:creationTimestamp: 2022-08-04T14:00:03Zlabels:kubernetes.io/metadata.name: defaultname: defaultresourceVersion: 206uid: 7d9da512-008f-4ed7-8d92-90bef1dba4d5 spec:finalizers:- kubernetes status:phase: Active5.3 查看ns详情 #命令 kubectl describe ns ns名称 [rootmaster ~]# kubectl describe ns default Name: default Labels: kubernetes.io/metadata.namedefault Annotations: none Status: Active #Active 命名空间正在使用中Terminating 正在删除命名空间 #Resource quota 针对namespace做的资源限制 No resource quota. #LimitRange针对namespace的每个组件做的资源限制 No LimitRange resource.5.4 创建 #创建namespace [rootmaster ~]# kubectl create ns dev namespace/dev created5.5 删除 [rootmaster ~]# kubectl delete ns dev namespace dev deleted5.6 配置方式 首先准备一个yaml文件ns-dev.yaml apiVersion: v1 kind: Namespace metadata:name: dev[rootmaster ns]# kubectl create -f ns-dev.yaml namespace/dev created [rootmaster ns]# kubectl get ns dev NAME STATUS AGE dev Active 20s [rootmaster ns]# kubectl delete -f ns-dev.yaml
    namespace dev deleted [rootmaster ns]# kubectl get ns dev
    Error from server (NotFound): namespaces dev not found6. Pods pod是k8s集群进行管理的最小单元程序要运行必须部署到容器中而容器必须存在于pod中。 pod可以认为是容器的封装一个pod中可以存在一个或多个容器 k8s在集群启动之后集群中的各个组件也都是以pod方式运行的可以通过下面命令查看 [rootmaster ns]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-6d8c4cb4d-8tqtt 0/1 Running 123 (5m58s ago) 21h coredns-6d8c4cb4d-vm7fx 0/1 Running 123 (5m26s ago) 21h etcd-master 11 Running 4 (21h ago) 21h kube-apiserver-master 11 Running 7 (8h ago) 21h kube-controller-manager-master 11 Running 3 (8h ago) 21h kube-proxy-lwls6 11 Running 0 21h kube-proxy-scwzg 11 Running 0 21h kube-proxy-sn9kc 11 Running 2 (21h ago) 21h kube-scheduler-master 11 Running 5 (8h ago) 21h6.1 查看所有pod [rootmaster ~]# kubectl get pods –all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-lrqqm 11 Running 1 (9m9s ago) 19m kube-flannel kube-flannel-ds-ssfgk 11 Running 0 19m kube-flannel kube-flannel-ds-xg9xb 11 Running 0 19m kube-system coredns-6d8c4cb4d-8tqtt 11 Running 126 (9m4s ago) 22h kube-system coredns-6d8c4cb4d-vm7fx 11 Running 126 (9m4s ago) 22h kube-system etcd-master 11 Running 5 (9m9s ago) 22h kube-system kube-apiserver-master 11 Running 8 (8m59s ago) 22h kube-system kube-controller-manager-master 11 Running 4 (9m9s ago) 22h kube-system kube-proxy-lwls6 11 Running 0 22h kube-system kube-proxy-scwzg 11 Running 0 22h kube-system kube-proxy-sn9kc 11 Running 3 (9m9s ago) 22h kube-system kube-scheduler-master 11 Running 6 (9m9s ago) 22h kubernetes-dashboard dashboard-metrics-scraper-799d786dbf-4fj8b 11 Running 132 (5m49s ago) 21h kubernetes-dashboard kubernetes-dashboard-77b9df557f-hpxmr 11 Running 92 (14m ago) 21h6.2 创建并运行 rootmaster ~]# kubectl create ns dev namespace/dev created#命令格式kubectl run (pod控制器名称) [参数]

    –image 指定pod的镜像

    –port 指定端口

    –namespace 指定namespace

    [rootmaster ~]# kubectl run nginx –imagenginx:1.17.1 –port80 –namespace dev pod/nginx created6.3 查看pod [rootmaster ~]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE nginx 11 Running 0 5s [rootmaster ~]# kubectl describe pod nginx -n dev
    Name: nginx Namespace: dev Priority: 0 Node: node1/192.168.200.102 Start Time: Fri, 05 Aug 2022 20:31:52 0800 Labels: runnginx Annotations: none Status: Running IP: 10.244.1.4 IPs:IP: 10.244.1.4 Containers:nginx:Container ID: docker://614f6b0c1b75b48750898014c9289e71ee85ec010619cfdb4184b25f3015965bImage: nginx:1.17.1Image ID: docker-pullable://nginxsha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbbPort: 80/TCPHost Port: 0/TCPState: RunningStarted: Fri, 05 Aug 2022 20:31:53 0800Ready: TrueRestart Count: 0Environment: noneMounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mxqzz (ro)6.4 访问pod [rootmaster ~]# kubectl get pods -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 11 Running 0 18m 10.244.1.2 node1 none none [rootmaster ~]# curl 10.244.1.2 !DOCTYPE html html head titleWelcome to nginx!/title stylebody {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;} /style /head body h1Welcome to nginx!/h1 pIf you see this page, the nginx web server is successfully installed and working. Further configuration is required./ppFor online documentation and support please refer to a hrefhttp://nginx.org/nginx.org/a.br/ Commercial support is available at a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p /body /html6.5 删除pod #找到对应pod并删除 kubectl delete pod nginx –namespacedev6.6 配置方式 创建一个pod-nginx.yaml内容如下 apiVersion: v1 kind: Pod metadata:name: nginxnamespace: dev spec: containers:- image: nginx:1.17.1imagePullPolicy: IfNotPresentname: podports: - name: nginx-portcontainerPort: 80protocol: TCPk8s的配置文件中经常看到有imagePullPolicy属性这个属性是描述镜像的拉取策略 Always 总是拉取镜像 IfNotPresent 本地有则使用本地镜像,不拉取 Never 只使用本地镜像从不拉取即使本地没有 如果省略imagePullPolicy 策略为always #创建 [rootmaster ~]# kubectl create -f pod-nginx.yaml pod/nginx created [rootmaster ~]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE nginx 11 Running 0 5m34s#删除 [rootmaster ~]# kubectl delete -f pod-nginx.yaml pod nginx deleted7. Lable Label是k8s系统中的一个重要概念。它的作用就是在资源上添加标识用来对它们进行区分和选择。 Label的特点 一个label会以KEY/VALUE键值对的形式附加到各种形象上如Node、Pod、Service等一个资源对象可以定义任意数量的label同一个label也可以被添加到任意数量的资源对象上去label通常在资源对象定义时确定当然也可以在对象创建后动态添加或者删除 可以通过label实现资源的多维度分组以便灵活、方便地进行资源分配、调度、配置、部署等管理工作 一些常用的label示例如下 版本标签“version”:“release”“version”:“stable”环境标签“environment”:“dev”“environment”:“test”“environment”:“pro”架构标签“tier”:“frontend”“tier”:“backend” 标签定义完毕之后还要考虑到标签的选择这就要使用到label selector即 label用于给某个资源对象定义标识label selector用于查询和筛选拥有某些标签的资源对象 当前有两种label selector 基于等式的label selector name slave选择所有包含label中keyname且valueslave的对象 env ! production选择所有包括label中的keyenv且value不等于production的对象 基于集合的label selector name in (master, slave)选择所有包含label中keyname且valuemaster或slave的对象 name not in (frontend)选择所有包含label中的keyname且value不等于frontend的对象 标签的选择条件可以使用多个此时将多个label selector进行组合使用逗号,进行分隔即可。例如 name slave,env ! productionname not in (frontend),env ! production7.1 为pod资源打标签 [rootmaster pod]# kubectl create -f pod-nginx.yaml pod/nginx created [rootmaster pod]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE nginx 11 Running 0 5s #查看标签 [rootmaster pod]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 18s none [rootmaster pod]# kubectl label pod nginx -n dev version1.0 pod/nginx labeled [rootmaster pod]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 32s version1.07.2 标签更新 更新version标签为2.0 [rootmaster ~]# kubectl label pod nginx -n dev version2.0 –overwrite pod/nginx labeled [rootmaster ~]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 4m52s version2.07.3 筛选标签 修改pod-nginx.yaml中的name为nginx1并创建pod修改version标签为1.0 [rootmaster ~]# vim pod-nginx.yaml [rootmaster ~]# kubectl create -f pod-nginx.yaml pod/nginx1 created [rootmaster ~]# kubectl label pod nginx1 -n dev version1.0 pod/nginx1 labeled [rootmaster ~]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 7m58s version2.0 nginx1 11 Running 0 64s version1.0使用标签选择器 [rootmaster ~]# kubectl get pod -l version2.0 -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 9m36s version2.0 [rootmaster ~]# kubectl get pod -l version!2.0 -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx1 11 Running 0 3m16s version1.07.4 删除标签 #格式kubectl label pod nginx -n dev 标签名- [rootmaster ~]# kubectl label pod nginx -n dev version- pod/nginx labeled [rootmaster ~]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 13m none nginx1 11 Running 0 6m46s version1.07.5 通过配置方式进行更新 修改nginx-pod.yaml内容 apiVersion: v1 kind: Pod metadata:name: nginxnamespace: devlabels:version: 3.0env: test spec: containers:- image: nginx:1.17.1imagePullPolicy: IfNotPresentname: podports: - name: nginx-portcontainerPort: 80protocol: TCP执行命令 [rootmaster ~]# vim pod-nginx.yaml [rootmaster ~]# kubectl apply -f pod-nginx.yaml Warning: kubectl apply should be used on resource created by either kubectl create –save-config or kubectl apply pod/nginx configured [rootmaster ~]# kubectl get pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 11 Running 0 21m envtest,version3.0 nginx1 11 Running 0 14m version1.08. Deployment 在k8s中pod是最小的控制单元但是k8s很少直接控制pod一般都是通过pod控制器来完成。 pod控制器用于对pod的管理确保pod资源符合预期的状态当pod的资源出现故障时会尝试进行重启或重建pod 在k8s中pod控制器的种类很多deployment是其中的一种 命令格式kubectl create deployment deployment名称 [参数] –image 指定pod的镜像 –port 指定端口 –replicas 指定创建pod数量 –namespace 指定namespace 8.1 查看创建的pod #创建一个pod [rootmaster ~]# kubectl create deployment nginx –imagenginx:1.17.1 –port80 –replicas3 –namespacedev kubectl run –generatordeployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run –generatorrun-pod/v1 or kubectl create instead. deployment.apps/nginx created #同时查看pod和deployment两种资源 [rootmaster ~]# kubectl get deployment,pod -n dev NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx 33 3 3 114sNAME READY STATUS RESTARTS AGE pod/nginx-64777cd554-2mbxb 11 Running 0 114s pod/nginx-64777cd554-h6spm 11 Running 0 114s pod/nginx-64777cd554-zjdp8 11 Running 0 114s8.2 查看创建的deployment的详细信息 [rootmaster ~]# kubectl describe deploy nginx -n dev Name: nginx Namespace: dev CreationTimestamp: Fri, 02 Jul 2021 19:29:46 0800 Labels: runnginx Annotations: deployment.kubernetes.io/revision: 1 Selector: runnginx Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template:Labels: runnginxContainers:nginx:Image: nginx:1.17.1Port: 80/TCPHost Port: 0/TCPEnvironment: noneMounts: noneVolumes: none Conditions:Type Status Reason—- —— ——Available True MinimumReplicasAvailableProgressing True NewReplicaSetAvailable OldReplicaSets: none NewReplicaSet: nginx-64777cd554 (33 replicas created) Events:Type Reason Age From Message—- —— —- —- ——-Normal ScalingReplicaSet 4m42s deployment-controller Scaled up replica set nginx-64777cd554 to 38.3 删除deployment [rootmaster ~]# kubectl delete deploy nginx -n dev deployment.apps nginx deleted [rootmaster ~]# kubectl get pod -n dev No resources found in dev namespace.8.4 使用配置文件来操作 创建一个deploy-nginx.yaml内容如下 apiVersion: apps/v1 kind: Deployment metadata: name: nginxnamespace: dev spec: replicas: 3selector: matchLabels: run: nginxtemplate:metadata:labels: run: nginxspec:containers:- image: nginx:1.17.1name: nginxports: - containerPort: 80protocol: TCP#创建 [rootmaster ~]# vim deploy-nginx.yaml [rootmaster ~]# kubectl create -f deploy-nginx.yaml deployment.apps/nginx created [rootmaster ~]# kubectl get deploy,pod -n dev NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx 33 3 3 14sNAME READY STATUS RESTARTS AGE pod/nginx-64777cd554-5k9m4 11 Running 0 13s pod/nginx-64777cd554-gbn6t 11 Running 0 13s pod/nginx-64777cd554-qwn2s 11 Running 0 13s#删除 [rootmaster ~]# kubectl delete -f deploy-nginx.yaml deployment.apps nginx deleted [rootmaster ~]# kubectl get deploy,pod -n dev No resources found in dev namespace.9. Service 使用deploy-nginx.yaml创建控制器 apiVersion: apps/v1 kind: Deployment metadata: name: nginxnamespace: dev spec: replicas: 3selector: matchLabels: run: nginxtemplate:metadata:labels: run: nginxspec:containers:- image: nginx:1.17.1name: nginxports: - containerPort: 80protocol: TCP [rootmaster ~]# kubectl create -f deploy-nginx.yaml deployment.apps/nginx created查看pod列表 [rootmaster ~]# kubectl get pod -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-64777cd554-4m2nj 11 Running 0 3m30s 10.244.1.15 node2 none none nginx-64777cd554-lp8v2 11 Running 0 3m30s 10.244.1.16 node2 none none nginx-64777cd554-w2m2t 11 Running 0 3m30s 10.244.2.9 node1 none 删除其中一个pod [rootmaster ~]# kubectl delete pod nginx-64777cd554-4m2nj -n dev pod nginx-64777cd554-4m2nj deleted查看新的pod [rootmaster ~]# kubectl get pod -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-64777cd554-lp8v2 11 Running 0 7m32s 10.244.1.16 node2 none none nginx-64777cd554-rlbm8 11 Running 0 47s 10.244.1.17 node2 none none nginx-64777cd554-w2m2t 11 Running 0 7m32s 10.244.2.9 node1 none none发现ip地址和以前不一样了 虽然每个pod都会分配一个单独的pod ip然而却存在如下问题 pod ip 会随着pod的重建产生变化pod ip仅仅是集群内可见的虚拟ip外部无法访问 这样对于访问这个服务带来了难度因此k8s设计了service来解决这个问题 service可以看作是一组同类pod对外的访问接口借助service应用可以方便地实现服务发现和负载均衡 9.1 创建集群内部可访问的service 暴露service [rootmaster ~]# kubectl expose deployment nginx –namesvc-nginx1 –typeClusterIP –port80 –target-port80 -n dev service/svc-nginx1 exposed [rootmaster ~]# kubectl get service -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx1 ClusterIP 10.100.210.11 none 80/TCP 44s #这里产生了一个ClusterIP这就是service的ip在service的生命周期中这个地址是不会变的可以通过这个Ip访问当前service对应的pod #访问service [rootmaster ~]# curl 10.100.210.11:80 !DOCTYPE html html head titleWelcome to nginx!/title stylebody {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;} /style /head body h1Welcome to nginx!/h1 pIf you see this page, the nginx web server is successfully installed and working. Further configuration is required./ppFor online documentation and support please refer to a hrefhttp://nginx.org/nginx.org/a.br/ Commercial support is available at a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p /body /html9.2 创建集群外部也可以访问的service 上面搭建的service的type类型为ClusterIP这个ip地址只能集群内部可访问 如果需要创建外部也可以访问的Service需要修改type为NodePort [rootmaster ~]# kubectl expose deploy nginx –namesvc-nginx2 –typeNodePort –port80 –target-port80 -n dev service/svc-nginx2 exposed [rootmaster ~]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx1 ClusterIP 10.100.210.11 none 80/TCP 20m svc-nginx2 NodePort 10.104.222.53 none 80:32714/TCP 67s在浏览器中访问 9.3 删除service rootmaster ~]# kubectl delete svc svc-nginx2 -n dev service svc-nginx2 deleted [rootmaster ~]# kubectl delete svc svc-nginx1 -n dev service svc-nginx1 deleted9.4 使用配置方式 apiVersion: v1 kind: Service metadata: name: svc-nginxnamespace: dev spec:ports:- port: 80protocol: TCPtargetPort: 80selector:run: nginxtype: ClusterIP使用配置文件 [rootmaster ~]# vim svc-nginx.yaml [rootmaster ~]# kubectl create -f svc-nginx.yaml service/svc-nginx created [rootmaster ~]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx ClusterIP 10.102.204.135 none 80/TCP 14s删除 [rootmaster ~]# kubectl delete -f svc-nginx.yaml service svc-nginx deleted [rootmaster ~]# kubectl get svc -n dev No resources found in dev namespace. ete svc svc-nginx1 -n dev service svc-nginx1 deleted

~### 9.4 使用配置方式~shell apiVersion: v1 kind: Service metadata: name: svc-nginxnamespace: dev spec:ports:- port: 80protocol: TCPtargetPort: 80selector:run: nginxtype: ClusterIP ~~~使用配置文件shell [rootmaster ~]# vim svc-nginx.yaml [rootmaster ~]# kubectl create -f svc-nginx.yaml service/svc-nginx created [rootmaster ~]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx ClusterIP 10.102.204.135 none 80/TCP 14s删除 [rootmaster ~]# kubectl delete -f svc-nginx.yaml service svc-nginx deleted [rootmaster ~]# kubectl get svc -n dev No resources found in dev namespace.