kubernetes日常操作维护(持续更新)
kubernetes版本:v1.11.1/2
文档参考:
http://docs.kubernetes.org.cn/
https://www.kubernetes.org.cn/docs
一、 节点
1. 节点查看
1 | [root@k8s-t1 ~]# kubect get nodes |
2. 节点调度
停止调度:仅阻止后续调度任务,已被调度到的pods不受影响
1 | [root@k8s-t1 ~]# kubect cordon k8s-t2 |
确认节点信息
1 | [root@k8s-t1 ~]# kubect get nodes |
恢复调度
1 | [root@k8s-t1 ~]# kubect uncordon k8s-t2 |
3. 节点维护
节点维护:清除此节点上所有用户deployment运行的pods,未使用deployment的pods需要手动清理,或者使用–force参数
1 | [root@k8s-t1 ~]# kubect drain k8s-t2 --ignore-daemonsets --delete-local-data |
参数解析:
- –ignore-daemonsets 忽略k8s的守护进程副本集pods
- –delete-local-data pods使用的本地空目录将被一起清理
查看节点信息
1 | [root@k8s-t1 ~]# kubect get nodes |
节点恢复
1 | [root@k8s-t1 ~]# kubect uncordon k8s-t2 |
4. 节点移除
1 | [root@k8s-t1 ~]# kubectl delete node k8s-t2 |
为了节点能重新加入到k8s集群,必须清理掉节点上原来加入到集群成生成的一部分文件,否则再次加入会失败,文件列表如下:
- /etc/kubernetes/pki/ca.crt
- /etc/kubernetes/kubelet.conf
- /etc/kubernetes/bootstrap-kubelet.conf
然后需要关闭kubelet服务,否则会报端口10250被占用。
kubernetes提供了更便捷的命令kubeadm reset来重置本节点环境,若报错,可以强制执行(-f)。
重新加入请使用原来初始化生成的kubeadm join命令串
二、pod
pod是k8s中最小管理单元,由一个或多个容器组合在一起得共享资源,这此资源包括:
- 共享存储,如Volumes卷
- 网络,唯一的集群IP地址
- 每个容器运行的信息,例如:容器镜像版本
Pod模型是特定应用程序的“逻辑主机”,Pod中的容器共享IP地址和端口。
三、service
kubernetes的service定义了Pod的逻辑分组和一种可以访问它们的策略,这组Pod能被Service访问,使用YAML(优先)或JSON来定义Service,Service所针对的一组Pod通常由LabelSelector实现,可以通过type在ServiceSpec中指定一个需要的类型的 Service,Service的四种type:
- ClusterIP(默认) - 在集群中内部IP上暴露服务。此类型使Service只能从群集中访问。
- NodePort - 通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 -
: ,可以从集群的外部访问一个 NodePort 服务。 - LoadBalancer - 使用云提供商的负载均衡器(如果支持),可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。
- ExternalName - 通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容,没有任何类型代理被创建。这种类型需要v1.7版本或更高版本kube-dnsc才支持。
四、deployment
Deployment负责创建和更新应用。创建Deployment后,Kubernetes master 会将Deployment创建好的应用实例调度到集群中的各个节点。
五、secret
k8s密钥是保存各类组件连接之间认证的服务
六、namespace
Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-system namespace中。
1. 系统默认命名空间(不可删除)
- default: 给用户定义的默认命名空间
- kube-public: k8s系统公共服务的命名空间
- kube-system: k8s系统服务及组件的命名空间
查看默认命名空间
1 | [root@k8s-t1 kubernetes]# kubectl get namespace |
2. 创新命名空间
1 | [root@k8s-t1 ~]# kubectl create namespace prod |
然后,你可以将你所有创建的k8s资源放在这个命名空间内,可以做到逻辑集合在一起,方便统一管理的好处
七、lables
Labels其实就一对 key/value ,被关联到对象上,标签的使用我们倾向于能够标示对象的特殊特点,并且对用户而言是有意义的(就是一眼就看出了这个Pod是尼玛数据库)
八、volume
默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题,第一:当容器挂掉kubelet将重启启动它时,文件将会丢失;第二:当Pod中同时运行多个容器,容器之间需要共享文件时。Kubernetes的Volume解决了这两个问题。
- 本文链接:http://www.whyvv.top/k8s_ops.html
- 版权声明:版权所有,转载请注明出处。
分享