如何理解K8S中kubectl
发表于:2024-10-23 作者:千家信息网编辑
千家信息网最后更新 2024年10月23日,这期内容当中小编将会给大家带来有关如何理解K8S中kubectl,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、kubectl 陈述式管理方法kubectl小洁:
千家信息网最后更新 2024年10月23日如何理解K8S中kubectl
这期内容当中小编将会给大家带来有关如何理解K8S中kubectl,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
一、kubectl 陈述式管理方法
kubectl小洁:kubectl是官方的CLI命令行工具,用于apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径。1、查看当前集群所有命名空间[root@test-nodes1 ~]# kubectl get namespaceNAME STATUS AGEdefault Active 42hkube-node-lease Active 42hkube-public Active 42hkube-system Active 42h------------------------------------------------------------------------------------------2、查看default命名空间下的所有资源[root@test-nodes1 ~]# kubectl get all -n defaultNAME READY STATUS RESTARTS AGEpod/nginx-ds-76fr8 0/1 ImagePullBackOff 0 39hpod/nginx-ds-zz7jn 0/1 ErrImagePull 0 39hpod/nginx-ds1-qg45q 1/1 Running 0 39hpod/nginx-ds1-whnmv 1/1 Running 0 39h#pod资源NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 192.168.0.1443/TCP 42h#service资源NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEdaemonset.apps/nginx-ds 2 2 0 2 0 39hdaemonset.apps/nginx-ds1 2 2 2 2 2 39h#pod控制器------------------------------------------------------------------------------------------3、创建与删除命名空间[root@test-nodes1 ~]# kubectl create namespace testnamespace/test created[root@test-nodes1 ~]# kubectl get namespaceNAME STATUS AGEdefault Active 42hkube-node-lease Active 42hkube-public Active 42hkube-system Active 42htest Active 6s[root@test-nodes1 ~]# kubectl delete namespace testnamespace "test" deleted------------------------------------------------------------------------------------------4、创建deployment(pods控制器)资源[root@test-nodes1 ~]# kubectl create deployment nignx-dp --image=test-harbor.cedarhd.com/public/nginx:v1.7.9 -n kube-publicdeployment.apps/nignx-dp created------------------------------------------------------------------------------------------5、查看kube-public命名空间下的deployment资源控制器[root@test-nodes1 ~]# kubectl get deployment -n kube-publicNAME READY UP-TO-DATE AVAILABLE AGEnignx-test 0/1 1 0 70s------------------------------------------------------------------------------------------6、查看kube-public命名空间下pods的运行情况[root@test-nodes1 ~]# kubectl get deployment -n kube-publicNAME READY UP-TO-DATE AVAILABLE AGEnignx-test 1/1 1 1 21s------------------------------------------------------------------------------------------7、查看kube-public空间下的pods资源[root@test-nodes1 ~]# kubectl get pods -n kube-public -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnignx-dp-7f6d4979bd-nnc57 0/1 ImagePullBackOff 0 13m 172.7.21.4 test-nodes1.cedarhd.com nignx-test-655d6fbcb5-r9t57 1/1 Running 0 4m1s 172.7.22.4 test-nodes2.cedarhd.com ------------------------------------------------------------------------------------------8、在test-nodes2.cedarhd.com节点上curl 172.7.22.4 nginx[root@test-nodes2 ~]# curl 172.7.22.4 Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.
For online documentation and support please refer tonginx.org.
Commercial support is available atnginx.com.Thank you for using nginx.
------------------------------------------------------------------------------------------9、查看deployment下具体pods(nginx-test)详细信息[root@test-nodes1 ~]# kubectl describe deployment nignx-test -n kube-publicName: nignx-testNamespace: kube-publicCreationTimestamp: Mon, 03 Feb 2020 02:02:59 -0500Labels: app=nignx-testAnnotations: deployment.kubernetes.io/revision: 1Selector: app=nignx-testReplicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailableStrategyType: RollingUpdateMinReadySeconds: 0RollingUpdateStrategy: 25% max unavailable, 25% max surgePod Template: Labels: app=nignx-test Containers: nginx: Image: test-harbor.cedarhd.com/public/nginx:v1.7.9 Port:Host Port: Environment: Mounts: Volumes: Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailableOldReplicaSets: NewReplicaSet: nignx-test-655d6fbcb5 (1/1 replicas created)Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 22m deployment-controller Scaled up replica set nignx-test-655d6fbcb5 to 1 ------------------------------------------------------------------------------------------10、进入nginx-test pod资源[root@test-nodes1 ~]# kubectl get pods -n kube-publicNAME READY STATUS RESTARTS AGEnignx-test-655d6fbcb5-r9t57 1/1 Running 0 24m[root@test-nodes1 ~]# kubectl exec -ti nignx-test-655d6fbcb5-r9t57 /bin/bash -n kube-public#与docker 操作方法一致root@nignx-test-655d6fbcb5-r9t57:/# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever12: eth0@if13: mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:07:16:04 brd ff:ff:ff:ff:ff:ff inet 172.7.22.4/24 brd 172.7.22.255 scope global eth0 valid_lft forever preferred_lft forever------------------------------------------------------------------------------------------11、删除pod资源(即重启)[root@test-nodes1 ~]# kubectl delete pod nignx-test-655d6fbcb5-r9t57 -n kube-publicpod "nignx-test-655d6fbcb5-r9t57" deleted[root@test-nodes1 ~]# kubectl get pods -n kube-public -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnignx-dp-7f6d4979bd-nnc57 0/1 ImagePullBackOff 0 40m 172.7.21.4 test-nodes1.cedarhd.com nignx-test-655d6fbcb5-c42z8 1/1 Running 0 18s 172.7.21.5 test-nodes1.cedarhd.com ------------------------------------------------------------------------------------------12、删除deployment[root@test-nodes1 ~]# kubectl get deploy -n kube-publicNAME READY UP-TO-DATE AVAILABLE AGEnignx-dp 0/1 1 0 53mnignx-test 1/1 1 1 36m[root@test-nodes1 ~]# kubectl delete deploy nignx-dp -n kube-publicdeployment.extensions "nignx-dp" deleted------------------------------------------------------------------------------------------13、为nginx-dp pod资源创建service资源,保障pod的高可用,通过集群IP访问[root@test-nodes1 ~]# kubectl get all -n kube-publicNAME READY STATUS RESTARTS AGEpod/nginx-dp-5b9b697bcc-jtrlp 1/1 Running 0 17sNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/nginx-dp 1/1 1 1 17sNAME DESIRED CURRENT READY AGEreplicaset.apps/nginx-dp-5b9b697bcc 1 1 1 17s[root@test-nodes1 ~]# kubectl get pods -n kube-public -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-dp-5b9b697bcc-jtrlp 1/1 Running 0 3m19s 172.7.21.4 test-nodes1.cedarhd.com [root@test-nodes1 ~]# kubectl expose deployment nginx-dp --port=80 -n kube-publicservice/nginx-dp exposed[root@test-nodes1 ~]# kubectl get svc -n kube-public #查看service资源NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-dp ClusterIP 192.168.224.56 80/TCP 12m[root@test-nodes1 ~]# kubectl get all -n kube-publicNAME READY STATUS RESTARTS AGEpod/nginx-dp-5b9b697bcc-jtrlp 1/1 Running 0 5m21sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/nginx-dp ClusterIP 192.168.224.56 80/TCP 79sNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/nginx-dp 1/1 1 1 5m21sNAME DESIRED CURRENT READY AGEreplicaset.apps/nginx-dp-5b9b697bcc 1 1 1 5m21s[root@test-nodes1 ~]# curl 192.168.224.56 Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.
For online documentation and support please refer tonginx.org.
Commercial support is available atnginx.com.Thank you for using nginx.
[root@test-nodes1 ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.0.1:443 nq -> 10.3.153.221:6443 Masq 1 0 0 -> 10.3.153.222:6443 Masq 1 0 0 TCP 192.168.224.56:80 nq -> 172.7.21.4:80 Masq 1 0 0
二、kubectl 声明式管理方法
小结:声明式资源管理方法依赖于-资源配置清单(yaml\json),偏于修改POD配置。
1、查看当前pod的资源配置清单[root@test-nodes1 ~]# kubectl get pods -n kube-publicNAME READY STATUS RESTARTS AGEnginx-dp-5b9b697bcc-jtrlp 1/1 Running 0 5h31m-nodes1.cedarhd.com[root@test-nodes1 ~]# kubectl get pods nginx-dp-5b9b697bcc-jtrlp -n kube-public -o yamlapiVersion: v1kind: Pod #类型为podmetadata: creationTimestamp: "2020-02-03T07:50:11Z" generateName: nginx-dp-5b9b697bcc- labels: app: nginx-dp pod-template-hash: 5b9b697bcc name: nginx-dp-5b9b697bcc-jtrlp namespace: kube-public ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: nginx-dp-5b9b697bcc uid: 30bbaf90-c97e-4167-9419-45a632e9b3ce resourceVersion: "222257" selfLink: /api/v1/namespaces/kube-public/pods/nginx-dp-5b9b697bcc-jtrlp uid: 59d63844-8ee7-4d7e-8536-d4e5de1ba903spec: containers: - image: test-harbor.cedarhd.com/public/nginx:v1.7.9 imagePullPolicy: IfNotPresent name: nginx resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: default-token-nt4w9 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: test-nodes1.cedarhd.com priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: default serviceAccountName: default terminationGracePeriodSeconds: 30 tolerations: - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 volumes: - name: default-token-nt4w9 secret: defaultMode: 420 secretName: default-token-nt4w9status: conditions: - lastProbeTime: null lastTransitionTime: "2020-02-03T07:50:11Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2020-02-03T07:50:14Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2020-02-03T07:50:14Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2020-02-03T07:50:11Z" status: "True" type: PodScheduled containerStatuses: - containerID: docker://745d5ad3412e5bccf2fb27dacce57e76987e8f6881cdb3aec79912888ba37ad6 image: test-harbor.cedarhd.com/public/nginx:v1.7.9 imageID: docker-pullable://test-harbor.cedarhd.com/public/nginx@sha256:b1f5935eb2e9e2ae89c0b3e2e148c19068d91ca502e857052f14db230443e4c2 lastState: {} name: nginx ready: true restartCount: 0 state: running: startedAt: "2020-02-03T07:50:13Z" hostIP: 10.3.153.221 phase: Running podIP: 172.7.21.4 qosClass: BestEffort startTime: "2020-02-03T07:50:11Z"------------------------------------------------------------------------------------------2、获取service资源的配置清单[root@test-nodes1 ~]# kubectl get service -n kube-publicNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-dp ClusterIP 192.168.224.56 80/TCP 5h31m[root@test-nodes1 ~]# kubectl get service nginx-dp -o yaml -n kube-publicapiVersion: v1kind: Service #类型为servicemetadata: creationTimestamp: "2020-02-03T07:54:13Z" labels: app: nginx-dp name: nginx-dp namespace: kube-public resourceVersion: "222606" selfLink: /api/v1/namespaces/kube-public/services/nginx-dp uid: 1b2310b5-6016-4692-b632-5c43d6dc4de5spec: clusterIP: 192.168.224.56 ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx-dp sessionAffinity: None type: ClusterIPstatus: loadBalancer: {} ------------------------------------------------------------------------------------------3、explain查看字段帮助说明kubectl explain service.metadata ------------------------------------------------------------------------------------------4、新建一个service的资源配置清单[root@test-nodes1 ~]# vi nginx-ds-svc.yamlapiVersion: v1kind: Servicemetadata: labels: app: nginx-ds name: nginx-ds namespace: kube-publicspec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx-ds sessionAffinity: None type: ClusterIP------------------------------------------------------------------------------------------5、通过声明式资源配置清单创建一个service资源[root@test-nodes1 ~]# kubectl create -f nginx-ds-svc.yaml service/nginx-ds created[root@test-nodes1 ~]# kubectl get service -n kube-publicNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-dp ClusterIP 192.168.224.56 80/TCP 5h39mnginx-ds ClusterIP 192.168.66.3 80/TCP 16s------------------------------------------------------------------------------------------6、在线修改nginx-ds的 service 资源端口为81[root@test-nodes1 ~]# kubectl get svc -n kube-publicNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-dp ClusterIP 192.168.224.56 80/TCP 5h49mnginx-ds ClusterIP 192.168.66.3 80/TCP 10m[root@test-nodes1 ~]# kubectl edit svc nginx-ds -n kube-public# Please edit the object below. Lines beginning with a '#' will be ignored,# and an empty file will abort the edit. If an error occurs while saving this file will be# reopened with the relevant failures.#apiVersion: v1kind: Servicemetadata: creationTimestamp: "2020-02-03T13:23:41Z" labels: app: nginx-ds name: nginx-ds namespace: kube-public resourceVersion: "250724" selfLink: /api/v1/namespaces/kube-public/services/nginx-ds uid: 5840630d-e00d-4e98-91a1-2b65a1eb22f4spec: clusterIP: 192.168.66.3 ports: - port: 81 #修改对外端口81 protocol: TCP targetPort: 80 selector: app: nginx-ds sessionAffinity: None type: ClusterIPstatus: loadBalancer: {}"/tmp/kubectl-edit-wp634.yaml" 27L, 684C writtenservice/nginx-ds edited[root@test-nodes1 ~]# kubectl get svc -n kube-publicNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-dp ClusterIP 192.168.224.56 80/TCP 5h50mnginx-ds ClusterIP 192.168.66.3 81/TCP 10m------------------------------------------------------------------------------------------7、删除一个service资源[root@test-nodes1 ~]# kubectl delete svc nginx-ds -n kube-publicservice "nginx-ds" deleted
三、关于kubectl的核心资源理解
[root@test-nodes1 ~]# kubectl get all -n kube-publicNAME READY STATUS RESTARTS AGEpod/nginx-dp-5b9b697bcc-jtrlp 1/1 Running 0 6h2m#pod资源,承载容器应用所在NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/nginx-dp ClusterIP 192.168.224.5680/TCP 5h67m#service资源,Service是Kubernetes里最核心的资源对象之一,Service定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入口地址访问其背后的一组由Pod副本组成的集群实力NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/nginx-dp 1/1 1 1 6h2m#deployment资源,Deployment同样也是Kubernetes系统的一个核心概念,主要职责和RC一样的都是保证Pod的数量和健康,可理解为pod控制器,当我们删除pod时,会再启动,不是真正删除,如需删除该pod,必须删除该控制器NAME DESIRED CURRENT READY AGEreplicaset.apps/nginx-dp-5b9b697bcc 1 1 1 6h2m
四、通过kubectl单独创建一个pod\deployment\service
1、创建一个nginx pod[root@test-nodes1 ~]# vi nginx-pod.yamlapiVersion: v1kind: Podmetadata: name: nginx labels: app: webspec: containers: - name: nginx image: test-harbor.cedarhd.com/public/nginx:v1.7.9 ports: - containerPort: 80[root@test-nodes1 ~]# kubectl create -f nginx-pod.yaml #创建一个PODpod/nginx created[root@test-nodes1 ~]# kubectl get allNAME READY STATUS RESTARTS AGEpod/nginx 1/1 Running 0 10m #刚刚创建的PODpod/nginx-ds1-qg45q 1/1 Running 0 47hpod/nginx-ds1-whnmv 1/1 Running 0 47hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 192.168.0.1443/TCP 2d2hNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEdaemonset.apps/nginx-ds1 2 2 2 2 2 47h------------------------------------------------------------------------------------------2、为该pod创建一个service[root@test-nodes1 ~]# kubectl expose pod nginx --port=80 -n defaultservice/nginx exposed[root@test-nodes2 ~]# kubectl get all NAME READY STATUS RESTARTS AGEpod/nginx 1/1 Running 0 14mpod/nginx-ds1-qg45q 1/1 Running 0 47hpod/nginx-ds1-whnmv 1/1 Running 0 47hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 192.168.0.1 443/TCP 2d2hservice/nginx ClusterIP 192.168.123.163 80/TCP 107sNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEdaemonset.apps/nginx-ds1 2 2 2 2 2 47h[root@test-nodes2 ~]# curl 192.168.123.163 获取nginx页面------------------------------------------------------------------------------------------3、创建一个deployment[root@test-nodes2 ~]# kubectl create deployment nginx-test --image=test-harbor.cedarhd.com/public/nginx:v1.7.9deployment.apps/nginx-test created[root@test-nodes2 ~]# kubectl get allNAME READY STATUS RESTARTS AGEpod/nginx 1/1 Running 0 27mpod/nginx-ds1-qg45q 1/1 Running 0 47hpod/nginx-ds1-whnmv 1/1 Running 0 47hpod/nginx-test-5674474869-5nr7j 1/1 Running 0 4sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 192.168.0.1 443/TCP 2d2hservice/nginx ClusterIP 192.168.123.163 80/TCP 15mNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEdaemonset.apps/nginx-ds1 2 2 2 2 2 47hNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/nginx-test 1/1 1 1 4sNAME DESIRED CURRENT READY AGEreplicaset.apps/nginx-test-5674474869 1 1 1 4s
上述就是小编为大家分享的如何理解K8S中kubectl了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
资源
空间
配置
控制器
清单
控制
方法
资源配置
管理
命令
核心
集群
信息
入口
内容
地址
端口
类型
分析
应用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术的预计市场占有率
网络安全专家吕述望
京东软件开发成本
税务网络安全应急管理预案
做个数据库
拨打电话显示服务器出错什么原因
网络安全知识竞赛模拟题库
起航网络安全教育
湖南串口服务器
互联网测绘公司 西安科技路
香港阿里云服务器登录步骤
域名的数据库如何升级
软件开发汇报
上虞财务软件开发怎么样
关于服务器硬件的知识
安卓app数据库设计
京东服务器机箱在哪生产
数据库底层表结构
服务器文件备份系统免费
网络安全法律防范措施
酒泉网络安全知识竞赛
江门通讯软件开发优化价格
儿童软件开发培训资质
网络安全知识培训讲稿
数据库技术支持待遇
浪潮英信服务器如何进bios
科蓝软件国产数据库排名
农业软件开发公司经营范围
geo数据库挖掘免费
湘江鲲鹏服务器出货每月多少台