当前位置:网站首页>kubernetes命令入门(namespaces,pods)
kubernetes命令入门(namespaces,pods)
2022-07-01 18:41:00 【dream21st】
文章目录
1 nameSpace介绍
namespace的中文名称是命名空间。 你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。 可以为你提供组织,安全甚至性能方面的帮助!
namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。
大多数的Kubernetes中的集群默认会有一个叫default的namespace。实际上,应该是4个:
1,default:你的资源默认被创建于default命名空间。
2,kube-system:kubernetes系统组件使用。
3,kube-node-lease: kubernetes集群节点租约状态,v1.13加入
4,kube-public:公共资源使用。但实际上现在并不常用。
这个默认(default)的namespace并没什么特别,但你不能删除它。这很适合刚刚开始使用kubernetes和一些小的产品系统。但不建议应用于大型生产系统。因为,这种复杂系统中,团队会非常容易意外地或者无意识地重写或者中断其他服务service。相反,请创建多个命名空间来把你的service(服务)分割成更容易管理的块。
作用:多租户情况下,实现资源隔离:属于逻辑隔离;属于管理边界;不属于网络边界;可以针对每个namespace做资源配额。
1.1 查看命名空间
#查看命名空间全拼
[[email protected] ~]# kubectl get namespaces
#查看命名空间简写
[[email protected] ~]# kubectl get ns
查看命名空间下面的pod:
[[email protected] ~]# kubectl get pod --all-namespaces
[[email protected] ~]# kubectl get pod -A
默认的命名空间有如下:
default 用户创建的pod默认在此命名空间
kube-public 所有用户均可以访问,包括未认证用户
kube-node-lease kubernetes集群节点租约状态,v1.13加入
kube-system kubernetes集群在使用
1.2 创建命名空间
[[email protected] ~]# kubectl create namespace dream21th-one
namespace/dream21th-one created
[[email protected] ~]# kubectl create ns dream21th-two
namespace/dream21th-two created
[[email protected] ~]# kubectl get ns
NAME STATUS AGE
default Active 118d
dream21th-one Active 49s
dream21th-two Active 30s
kube-node-lease Active 118d
kube-public Active 118d
kube-system Active 118d
1.3 删除命名空间
[[email protected] ~]# kubectl delete namespace dream21th-one
namespace "dream21th-one" deleted
[[email protected] ~]# kubectl delete ns dream21th-two
namespace "dream21th-two" deleted
[[email protected] ~]# kubectl get ns
NAME STATUS AGE
default Active 118d
kube-node-lease Active 118d
kube-public Active 118d
kube-system Active 118d
2 pod简介
Pod是kubernetes集群能够调度的最小单元。Pod是容器的封装 。 在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同
一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。
网络:每一个Pod都会被指派一个唯一的Ip地址,在Pod中的每一个容器共享网络命名空间,包括Ip地址和网络端口。在同一个Pod中的容器可以和localhost进行互相通信。当Pod中的容器需要与Pod外的实体进行通信时,则需要通过端口等共享的网络资源。
存储:Pod能够被指定共享存储卷的集合,在Pod中所有的容器能够访问共享存储卷,允许这些容器共享数据。存储卷也允许在一个Pod持久化数据,以防止其中的容器需要被重启。
K8s一般不直接创建Pod。 而是通过控制器和模版配置来管理和调度在Pod中的容器可能会由于异常等原因导致其终止退出,kubernetes提供了重启策略以重启容器。重启策略对同一个Pod的所有容器起作用,容器的重启由Node上的kubelet执行。Pod支持三种重启策略,在配置文件中通过restartPolicy字段设置重启策略(注意,这里的重启是指在Pod的宿主Node上进行本地重启,而不是调度到其它Node上):
1,Always:只要退出就会重启;
2,OnFailure:只有在失败退出(exit code不等于0)时,才会重启;
3,Never:只要退出,就不再重启。
Kubernetes通过cgroups限制容器的CPU和内存等计算资源,包括requests(请求,调度器保证调度到资源充足的Node上)和limits(上限)等。
2.1 查看pod
#查看default命名空间下的pods
[[email protected] ~]# kubectl get pods
No resources found in default namespace.
#查看kube-system命名空间下的pods
[[email protected] ~]# kubectl get pods -n kube-system
#查看所有命名空间下的pods
[[email protected] ~]# kubectl get pod --all-namespaces
[[email protected] ~]# kubectl get pod -A
2.2 创建pod
下载镜像:
[[email protected] ~]# docker pull tomcat:9.0.20-jre8-alpine
运行pod:
#在default命名空间中创建一个pod副本的deployment
[[email protected] ~]# kubectl run tomcat9-test --image=tomcat:9.0.20-jre8-alpine --port=8080
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/tomcat9-test created
[[email protected] ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
tomcat9-test-569b5bf455-9bvzs 1/1 Running 0 14s
[[email protected] ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat9-test-569b5bf455-9bvzs 1/1 Running 0 22s 10.244.2.3 k8s-work2 <none> <none>
#使用pod的IP访问容器
[[email protected] ~]# curl 10.244.2.3:8080
2.3 扩容
# 扩容成3个
[[email protected] ~]# kubectl scale --replicas=3 deployment/tomcat9-test
deployment.apps/tomcat9-test scaled
# 查看pod
[[email protected] ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
tomcat9-test-569b5bf455-9bvzs 1/1 Running 0 4m17s
tomcat9-test-569b5bf455-s826c 0/1 ContainerCreating 0 5s
tomcat9-test-569b5bf455-zx4zk 0/1 ContainerCreating 0 5s
[[email protected] ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat9-test-569b5bf455-9bvzs 1/1 Running 0 4m22s 10.244.2.3 k8s-work2 <none> <none>
tomcat9-test-569b5bf455-s826c 1/1 Running 0 10s 10.244.1.5 k8s-work1 <none> <none>
tomcat9-test-569b5bf455-zx4zk 1/1 Running 0 10s 10.244.1.4 k8s-work1 <none> <none>
#查看部署
[[email protected] ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
tomcat9-test 3/3 3 3 4m40s
[[email protected] ~]# kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
tomcat9-test 3/3 3 3 4m52s tomcat9-test tomcat:9.0.20-jre8-alpine run=tomcat9-test
[[email protected] ~]# curl 10.244.2.3:8080
2.4 创建服务
[[email protected] ~]# kubectl expose deployment tomcat9-test --name=tomcat9-svc --port=8888 --target-port=8080 --protocol=TCP --type=NodePort
service/tomcat9-svc exposed
[[email protected] ~]# kubtck get pod
-bash: kubtck: 未找到命令
[[email protected] ~]# kubtck get pods
-bash: kubtck: 未找到命令
[[email protected] ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
tomcat9-test-569b5bf455-9bvzs 1/1 Running 0 16m
tomcat9-test-569b5bf455-s826c 1/1 Running 0 12m
tomcat9-test-569b5bf455-zx4zk 1/1 Running 0 12m
[[email protected] ~]# kubtck get svc
-bash: kubtck: 未找到命令
[[email protected] ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 118d
tomcat9-svc NodePort 10.96.33.14 <none> 8888:30286/TCP 40s
[[email protected] ~]# curl 10.96.33.14:8888
在浏览器上面访问http://192.168.43.103:30286/也可以正常访问。
3 常用指令
3.1 get
kubectl get:列出一个或多个资源。
#查看集群状态信息
[[email protected] ~]# kubectl cluster-info
[[email protected] ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {
"health":"true"}
#查看集群节点信息
[[email protected] ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 118d v1.17.5
k8s-work1 Ready <none> 118d v1.17.5
k8s-work2 Ready <none> 118d v1.17.5
# 查看集群命名空间
[[email protected] ~]# kubectl get ns
# 查看指定命名空间的服务
[[email protected] ~]# kubectl get svc -n kube-system
# 以纯文本输出格式列出所有 pod。
[[email protected] ~]# kubectl get pods
# 以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)。
[[email protected] ~]# kubectl get pods -o wide
# 以纯文本输出格式列出所有副本控制器和服务。
[[email protected] ~]# kubectl get rc,services
#列出在节点 server01 上运行的所有 pod
[[email protected] ~]# kubectl get pods --field-selector=spec.nodeName=k9s-master
3.2 describe
kubectl describe - 显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。
[[email protected] ~]# kubectl describe nodes k8s-master
[[email protected] ~]# kubectl describe pods tomcat9-test-569b5bf455-9bvzs
3.3 delete
kubectl delete` - 从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。
# 使用 pod.yaml 文件中指定的类型和名称删除 pod。
kubectl delete -f pod.yaml
# 删除标签名= <label-name> 的所有 pod 和服务。
kubectl delete pods,services -l name=<label-name>
# 删除所有具有标签名称= <label-name> 的 pod 和服务,包括未初始化的那些。
kubectl delete pods,services -l name=<label-name> --include-uninitialized
# 删除所有 pod,包括未初始化的 pod。
kubectl delete pods --all
3.4 进入容器
kubectl exec - 对 pod 中的容器执行命令。与docker的exec命令非常类似。
# 从 pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。
kubectl exec <pod-name> date
# 运行输出 'date' 获取在容器的 <container-name> 中 pod <pod-name> 的输出。
kubectl exec <pod-name> -c <container-name> date
# 获取一个交互 TTY 并运行 /bin/bash <pod-name >。默认情况下,输出来自第一个容器。
kubectl exec -ti <pod-name> /bin/bash
3.5 logs
kubectl logs - 打印 Pod 中容器的日志。
# 从 pod 返回日志快照。
kubectl logs <pod-name>
# 从 pod <pod-name> 开始流式传输日志。这类似于 'tail -f' Linux 命令。
kubectl logs -f <pod-name>
3.6 格式化输出
[[email protected] ~]# kubectl get pod tomcat9-test-569b5bf455-9bvzs -o yaml
3.7 强制删除pod
强制删除一个pod
--force --grace-period=0
4 资源缩写
边栏推荐
- Intensive cultivation of channels for joint development Fuxin and Weishi Jiajie held a new product training conference
- What designs are needed in the architecture to build a general monitoring and alarm platform
- 【快应用】text组件里的文字很多,旁边的div样式会被拉伸如何解决
- Clean up system cache and free memory under Linux
- 《Go题库·16》读写锁底层是怎么实现的
- JS find the next adjacent element of the number in the array
- 前4A高管搞代运营,拿下一个IPO
- Technology implementation and Architecture Practice
- Go Technology Daily (2022-02-14) - go language slice interview real questions 8 consecutive questions
- Games202 operation 0 - environment building process & solving problems encountered
猜你喜欢
[live broadcast appointment] database obcp certification comprehensive upgrade open class
OpenAI|视频预训练 (VPT):基于观看未标记的在线视频的行动学习
Memo - about C # generating barcode
11. Users, groups, and permissions (1)
前4A高管搞代运营,拿下一个IPO
Halcon图片标定,使得后续图片处理过后变成与模板图片一样
Lumiprobe 自由基分析丨H2DCFDA说明书
3. "Create your own NFT collections and publish a Web3 application to show them" cast NFT locally
Prices of Apple products rose across the board in Japan, with iphone13 up 19%
Why do independent website sellers start to do social media marketing? The original customer conversion rate can be improved so much!
随机推荐
2020, the regular expression for mobile phone verification of the latest mobile phone number is continuously updated
[quick application] win7 system cannot run and debug projects using Huawei ide
斯坦福、Salesforce|MaskViT:蒙面视觉预训练用于视频预测
毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?
搭建一個通用監控告警平臺,架構上需要有哪些設計
Lumiprobe bifunctional crosslinker sulfo cyanine 5 bis NHS ester
宏观视角看抖音全生态
摄像头的MIPI接口、DVP接口和CSI接口[通俗易懂]
Write an open source, convenient and fast database document query and generation tool with WPF
C-end dream is difficult to achieve. What does iFLYTEK rely on to support the goal of 1billion users?
ES6 summary "suggestions collection" of array methods find(), findindex()
Three simple methods of ES6 array de duplication
透过华为军团看科技之变(六):智慧公路
Huawei cloud experts explain the new features of gaussdb (for MySQL)
Navicat premium 15 permanent cracking and 2021 latest idea cracking (valid for personal testing)
The R language cartools package divides the data, the scale function scales the data, the KNN function of the class package constructs the k-nearest neighbor classifier, and the table function calcula
How to realize the bottom layer of read-write lock in go question bank 16
如何运营好技术相关的自媒体?
Altair HyperWorks 2022软件安装包和安装教程
Technology implementation and Architecture Practice