(本文章是学习《kubernetes in action》 一书时做的笔记,由于本人是刚学习k8s,且自学方式就是把它敲一遍,然后加一些自己的理解。所以会发现很多内容是跟书中内容一模一样,如果本文是对对本书的侵权,敬请谅解,告知后会立即删除。如果引用或转载,请注明出处——谢谢)
kubectl port-forward podName 本机端口:pod监听的端口
可在终端中运行localhost:8888 来连接到pod的端口
往往用于调试测试某个特定的pod
##可以给pod添加标签,以便众多的pod进行管理
一般会给使用 app、rel 两个标签
app:指定pod属于哪个应用、组件、或微服务
rel:显示在pod中运行的应用程序版本是stable、beta、canary
通过get命令一般是不会列出标签的,添加–show-labels 可查看标签
kubectl get po --show-labels
如果对某些标签比较感兴趣,也可以通过 -L参数显示指定的标签在列表中
kubectl get po -L labelName1, labelName2
则会在输出的结果的末尾两列列出两个标签的情况
添加:kubectl lable po podName labelName=labelValue
修改:kubectl label po podName labelName=labelValue --overwrite
在kubernetes 中不单单可以对pod使用标签,几乎可以对所有的资源对象使用标签
比如对一个节点添加标签
kubectl label node nodeName labelName=labelValue
根据标签列出对应的node
kubectl get nodes -l labelName=labelValue
在列出mode资源时,同时显示labelName 的情况
kubectl get nodes -L labelName
apiVersion: v1
kind: pod
metadata:
name:pod-test
spec:
nodeSelector: #节点选择器,将pod部署到包含标签labelName=labelValue的节点上
labelName:"labelValue"
containers:
- image:kubia
name: kubia
列出所有的命名空间 kubectl get ns
当我们使用kubectl时,没有指定命名空间时,会使用默认的命名空间 default
也可指定列出某命名空间的资源
kubectl get po --namespace kube-system 列出命名空间为kube-sysytem 的pod对象
通常我们会使用 -n 来代替 --namespace
在不同的命名空间中,我们资源对象名称可以相互重复,但是同一命名空间中不允许
创建一个命名空间
通过yaml文件来创建
apiVersion:v1
kind: Namespace #表示正在定义一个命名空间
metadata:
name: test-namespace #创建命名空间的名字
使用kubectl 命令来创建命名空间
kubectl create namespace test-namespace
需要注意的是命名空间的名字不能包含点号
管理其他命名空间的资源
如果想要操作在指定的命名空间的资源,在使用kubectl时 需要加上-n namespaceName参数
通过yaml文件创建资源时,需要指定命名空间,则在metadata.nameSpace 字段中指定命名空间
命名空间提供的隔离
尽管命名空间将对象分到不同的组,但是命名空间并不提供对正在运行时的对象的任何隔离。
例如不同命名空间的pod之间网络是否隔离,是否能够通信,这与命名空间无关,命名空间之间是否提供网络间隔离取决于kubernetes所使用的网络解决方案有关,当该解决方案不提供命名空间间的网络隔离时,只要知道pod的IP地址,就可以进行网络通信
删除和移除pod
kubectl delete po podName
删除指定的pod,删除pod时,会终止该pod中所有的容器,kubernetes向进程发送一个SIGTERM的信号,并等待一定的时间(默认是30秒),使其正常关闭,如果没有及时关闭,则会通过SIGKILL终止该进程,因此为了你的进程能够正常的关闭,进程需要正确的处理SITERM信号
通过标签选择器来删除pod
kubectl delete po -l labelName=labelValue
通过删除整个命名空间删除pod
kubectl delete ns namespaceName
删除命名空间中所有的pod,但保留命名空间
kubectl delete po --all
删除命名空间中所有的资源
kubectl delete all --all
注意,此时不是所有的资源都会被删除,比如secret会被保留下来,需要明确删除。
并且使用all 时,也会删除所有以kubernetes的Service,但是它们会在几分钟内自动创建
(本文章是学习《kubernetes in action》 一书时做的笔记,由于本人是刚学习k8s,且自学方式就是把它敲一遍,然后加一些自己的理解。所以会发现很多内容是跟书中内容一模一样,如果本文是对本书的侵权,敬请谅解,告知后会删除。如果引用或转载,请注明出处——谢谢)