k8s入门-命令行实现

1-什么是NameSpace?

  • 俗称命名空间,可以单纯的认为namespaces是kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。 可以为你提供组织,安全甚至性能方面的帮助!
  • Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace

大多数的Kubernetes中的集群默认会有一个叫default的namespace。然而实际上存在4个namespace

  • default:资源默认被创建于default命名空间。
  • kube-system:kubernetes系统组件使用。
  • kube-node-lease: kubernetes集群节点租约状态。
  • kube-public:公共资源使用,但实际上现在并不常用。

这个默认(default)的namespace并没什么特别,但是不能删除它。这很适合刚刚开始使用kubernetes和一些小的产品系统。但不建议应用于大型生产系统。因为这种复杂系统中,团队会非常容易意外地或者无意识地重写或者中断其他服务service。相反,创建多个命名空间来把service(服务)分割成更容易管理的块。

(default)的namespace基本作用

多租户情况下,实现资源隔离。
属于逻辑隔离,属于管理边界,不属于网络边界。
可以针对每个namespace做资源配额。

1.1 查看命名空间

1、具体命令

## 查看命名空间
kubectl get namespace

## 查看所有命名空间的pod资源
kubectl get pod --all-namespaces
kubectl get pod -A

## 简写命令(查看命名空间)
kubectl get ns

查询结果!!!

## 1、查看命名空间
[root@k8s-master01 data]# kubectl get namespace
NAME              STATUS   AGE
default           Active   169m
kube-node-lease   Active   169m
kube-public       Active   169m
kube-system       Active   169m
## 2、查看所有命名空间的pod资源
[root@k8s-master01 data]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-6b94766748-pn4l8   1/1     Running   0          78m
kube-system   calico-node-4m62k                          1/1     Running   0          78m
kube-system   calico-node-7bnqj                          1/1     Running   0          78m
kube-system   calico-node-krh64                          1/1     Running   0          78m
kube-system   calico-node-zwvv9                          1/1     Running   0          78m
kube-system   coredns-6955765f44-nwzg6                   1/1     Running   0          169m
kube-system   coredns-6955765f44-rdwnc                   1/1     Running   0          169m
kube-system   etcd-k8s-master01                          1/1     Running   1          169m
kube-system   kube-apiserver-k8s-master01                1/1     Running   1          169m
kube-system   kube-controller-manager-k8s-master01       1/1     Running   1          169m
kube-system   kube-proxy-4vdxm                           1/1     Running   1          159m
kube-system   kube-proxy-5nlqn                           1/1     Running   1          154m
kube-system   kube-proxy-npzs2                           1/1     Running   1          169m
kube-system   kube-proxy-z47rt                           1/1     Running   1          154m
kube-system   kube-scheduler-k8s-master01                1/1     Running   1          169m
## 3、查看命名空间
[root@k8s-master01 data]# kubectl get ns
NAME              STATUS   AGE
default           Active   169m
kube-node-lease   Active   169m
kube-public       Active   169m
kube-system       Active   169m
[root@k8s-master01 data]# 

3、命名空间说明

[root@k8s-master01 data]# kubectl get namespace
NAME              STATUS   AGE
default           Active   169m	# 用户创建的pod默认在此命名空间
kube-node-lease   Active   169m # 所有用户均可以访问,包括未认证用户
kube-public       Active   169m # kubernetes集群节点租约状态
kube-system       Active   169m # kubernetes集群在使用

1.2 NameSpace相关操作

1、创建NameSpace

kubectl create namespace guardwhy01
-- 简写命令
kubectl create ns guardwhy02

2、删除NameSpace

kubectl delete namespace guardwhy01
-- 简写命令
kubectl delete ns guardwhy02

3、执行结果!!!

[root@k8s-master01 data]# kubectl get namespace
NAME              STATUS   AGE
default           Active   3h7m
kube-node-lease   Active   3h7m
kube-public       Active   3h7m
kube-system       Active   3h7m
[root@k8s-master01 data]# kubectl create namespace guardwhy01
namespace/guardwhy01 created
[root@k8s-master01 data]# kubectl create ns guardwhy02
namespace/guardwhy02 created
[root@k8s-master01 data]# kubectl get namespace
NAME              STATUS   AGE
default           Active   3h8m
guardwhy01        Active   36s
guardwhy02        Active   5s
kube-node-lease   Active   3h8m
kube-public       Active   3h8m
kube-system       Active   3h8m
[root@k8s-master01 data]# kubectl delete namespace guardwhy01
namespace "guardwhy01" deleted
[root@k8s-master01 data]# kubectl delete ns guardwhy02
namespace "guardwhy02" deleted
[root@k8s-master01 data]# kubectl get namespace
NAME              STATUS   AGE
default           Active   3h12m
kube-node-lease   Active   3h12m
kube-public       Active   3h12m
kube-system       Active   3h12m
[root@k8s-master01 data]# 

2- 什么是pod?

Pod是kubernetes集群能够调度的最小单元,Pod是容器的封装 。在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。

2.1 Pod的基本特点

网络:每一个Pod都会被指派一个唯一的Ip地址,在Pod中的每一个容器共享网络命名空间,包括Ip地址和网络端口。在同一个Pod中的容器可以和localhost进行互相通信。当Pod中的容器需要与Pod外的实体进行通信时,则需要通过端口等共享的网络资源。

存储:Pod能够被指定共享存储卷的集合,在Pod中所有的容器能够访问共享存储卷,允许这些容器共享数据。存储卷也允许在一个Pod持久化数据,以防止其中的容器需要被重启。

2.2 Pod的工作方式

1、K8s一般不直接创建Pod,而是通过控制器和模版配置来管理和调度。

2、Pod重启:在Pod中的容器可能会由于异常等原因导致其终止退出,Kubernetes提供了重启策略以重启容器。重启策略对同一个Pod的所有容器起作用,容器的重启由Node上的kubelet执行。Pod支持三种重启策略,在配置文件中通过restartPolicy字段设置重启策略。

Always:只要退出就会重启。
OnFailure:只有在失败退出(exit code不等于0)时,才会重启。
Never:只要退出,就不再重启

注意,这里的重启是指在Pod的宿主Node上进行本地重启,而不是调度到其它Node上

3、资源限制

Kubernetes通过cgroups限制容器的CPU和内存等计算资源,包括requests(请求,调度器保证调度到资源充足的Node上)和limits(上限)。

2.3 Pod基本操作

1、查看Pod,执行以下命令

-- 1、查看default命名空间下的pods
kubectl get pods

-- 2、查看kube-system命名空间下的pods
kubectl get pods -n kube-system

-- 3、查看所有命名空间下的pods
kubectl get pod --all-namespaces
kubectl get pod -A

2、创建Pod

下载tomcat相关的镜像

[root@k8s-master01 data]# docker pull tomcat:9.0.37-jdk8-openjdk-slim
[root@k8s-master01 data]# docker pull tomcat:9.0.20-jre8-alpine
[root@k8s-master01 data]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值