网站开发之美,免费游戏代理平台有哪些,门户网站运营,建设网站的价值管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录#xff0c;也可以用证书登录 k8s只能用证书登录 谁拿到这个证书#xff0c;谁就可以管理集群 在k8s中#xff0c;所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以… 管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录也可以用证书登录 k8s只能用证书登录 谁拿到这个证书谁就可以管理集群 在k8s中所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以被主机访问到的 比如能ping 通 如果pod运行的是web服务 也可以直接curl pod_ip访问到web服务 k8s集群对容器的管理和使用方式 pod在系统进程中是一个多进程的聚合单位 一个容器一个服务就是一个进程 同一个pod共享网络和卷 pod的创建过程 用户向apiserver发送指令 apiserver会把指令的信息记录在数据库etcd中 pod的创建过程是一个异步创建 scheduler通过watch机制 发现集群中创建出来但尚未被调度的pod 由scheduler决定这个pod运行在哪个节点上 scheduler作为集群中的调度器会选择合适的节点 让这个pod进行运行 选择好节点之后 会把这个数据同步给apiserver 并且会记录在etcd数据库中 这个调度的过程叫做绑定。 第一个过程是用户的指令过程 第二个过程是pod的调度过程 这两个过程是分开执行的 这两个过程结束之后pod还是没有被创建。 之前这两个过程都是在管理控制节点master上运行的 在master上执行完调度绑定之后 就该到计算节点了。 被绑定的计算节点的kubelet通过watch机制发现集群中 被绑定到这个节点上但尚未被创建的pod kubelet自己不会创建容器 kubelet会去找runtime软件比如containerd runtime软件负责 按照kubelet的要求把pod创建出来 创建完之后 把结果反馈给kubelet kubelet把结果反馈给apiserver 最终把结果写入到数据库中。 pod的创建总共三个过程 第一个是与用户交互的过程 第二个是调度的过程 第三个是创建的过程 所以kubectl get 命令的查询 并不是去实际节点进行查询 而是查询etcd数据库中pod的状态。 至于pod的实际状态 是由kubelet更新进数据库的。 pod在创建过程中会经历不同的状态 第一个是pending是一个等待调度的过程 第二个是scheduler进行调度调度之后 pod会进入一个中间状态叫createcontainer 第三个是runnning和failed其中的一种就是创建失败还是成功了 如果未成功创建pod隔一段时间还会重试重新运行 尝试让pod成功运行 任务执行成功之后会进入completed状态 这是pod的各种状态和相位。 failed是非0退出码 unknown 无法获取pod的状态大多数是由于网络不通了或者被防火墙屏蔽了 了解这些有助于pod的管理和排错。 ----------------------------------------------------------------------------------- namespace也是一种api资源 kube-system是系统名称空间 events是在describe里面主要用途是排错 get看外观 describe看pod logs看容器 排错三兄弟比装系统还重要 ]# kubectl exec -it myweb -- ls
# 其中-- 是选项终止符这个不是k8s里面的东西是shell的东西
]# ls --help | grep --time
# 这个里面--time没有被当成grep的参数而被当成grep的选项了
]# ls --help | grep -- --time
# 加上选项终止符-- , 就是告诉grep后面的内容不是选项了是参数]# kubectl exec -it myweb -- ls
index.html info.php
]# kubectl exec -it myweb ls
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
index.html info.php
# k8s也告诉管理员了pod后面要加命令就用 -- [COMMAND]“--”选项终止符的作用是解决复杂命令之间选项和参数分割的问题。 pod会监控自己的容器 如果容器故障了会自动restart容器 控制器可以跨节点搬运服务如果有节点故障了 控制器自动把服务搬到其他节点上运行 exec主要用于在容器内运行命令 有时候通过看日志还搞不定了就得进容器里面看 cp 把文件和目录拷贝进容器也可以从容器中拷贝到宿主机 ]# kubectl cp myweb:/var/www ./www
tar: Removing leading / from member namesdocker的cp是本机复制 k8s的cp是跨主机复制 k8s是把要拷贝的数据先条带化打包tar包是个条带化数据按照条带化的方式 把数据发过来发过来的东西就是个tar包在本地做了一个解包的操作 所以k8s的cp是靠tar实现的 cp还有一个功能是重定向 ]# tar -cf - www
# 这里面的- 代表标准输入和标准输出
]# tar -cf - www |gzip a.tar.gz重定向可以实现跨主机重定向 可以在A机器重定向到B机器。