Kubernetes 集群运维笔记
本篇记录在日常对Kubernetes集群管理时的一些问题和解决方法。 维护Node k8s集群运行一段时间后,有时需要对Node节点进行维护,例如进行内核或已安装软件的升级。 在进行维护之前需要禁止新的Pod调度到该节点上,同时要将该节点上的Pod驱逐到其他的Node上(DaemonSet除外)。 使用如下的命令:
本篇记录在日常对Kubernetes集群管理时的一些问题和解决方法。 维护Node k8s集群运行一段时间后,有时需要对Node节点进行维护,例如进行内核或已安装软件的升级。 在进行维护之前需要禁止新的Pod调度到该节点上,同时要将该节点上的Pod驱逐到其他的Node上(DaemonSet除外)。 使用如下的命令:
通过前面对Ansible的学习,我们已经对Ansible的Playbook和Role有了初步的认识,接下来我们将在实践中慢慢把Ansible引入到我们的配置管理工作中来。 本篇是在我们的测试环境中使用Ansible安装Docker的记录。 目录结构 我们创建了一个名称为docker的Ansible role:
2018/06:经过一年多的发展Kubernetes的Ingress发生了很大的变化,这篇的很多地方都不适用了。因此决定结合我们目前的使用情况重新写几篇Kubernetes Ingress相关的分享,链接如下,内容是比较入门和初级的实操,请高手勿喷。
ansible role 当一个配置管理的任务十分复杂时,playbook文件会十分庞大,这这种情况下将不利于扩展和复用。 这个时候可以使用ansible role将这个复杂的playbook模块化。Ansible role实际上是对playbook进行了逻辑上的划分,分成不同目录。 ansible已经规定好了目录的结构:
playbook是Ansible进行配置管理的基本组件。 第一个playbook Ansible playbook的文件格式为yaml,具体yaml的语法可以参考这里。 下面我们编写一个使用yum安装nginx的playbook作为入门,nginx.yaml的内容如下: --- - hosts: web-servers tasks: - selinux: state=disabled - name: Add repository yum_repository: name: nginx baseurl: http://nginx.org/packages/centos/7/$basearch/ gpgcheck: no enabled: yes description: nginx repo - name: Install nginx yum: name=nginx state=present - name: Copy nginx.conf template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s' notify: - Restart nginx handlers: - name: Restart nginx systemd: name=nginx state=restarted enabled=yes - hosts: web-servers定义了该playbook的目标主机,这里指定了资源清单文件/etc/ansible/hosts中的web-servers组,如果目标是所有主机则可以使用all tasks:定义该playbook的task集合,可以使用ansible-playbook nginx.yaml --list-task打印playbook中的task。 - selinux: state=disabled定义了一个名称为selinux的task,使用Ansible的selinuxmodule禁用目标主机上的色Linux。 - name: Add repository定义的task使用Ansible的yum_repositorymodule向目标主机添加nginx官方的yum repo - name: Install nginx定义的task使用Ansible的yummodule在各个目标主机上安装nginx - name: Copy nginx.conf定义的task使用Ansible的templatemodule将nginx.conf.j2模板生成nginx.conf配置文件并推送到各个目标主机。notify指定了配置文件推送成功且配置文件内容发生变化侯触发名称为Restart nginx的handler。 handlers中只有一个Restart nginx的handler,使用Ansible的systemdmodule实现重启nginx服务。 nginx.conf.j2模板是python的Jinja2模本,这里作为一个入门的例子,先不考虑模板功能,直接使用一个期望的nginx配置文件的内容即可。
本文内容已过期 有关ansible安装可参考这里 1.环境 192.168.61.41 node1 192.168.61.42 node2 192.168.61.43 node3 2.安装Ansible node1将做为控制主机(ansiblecontrol),下面在node1上安装Ansible。
概述 Kuberntes中API Server的访问控制过程图示如下: access-control-overview 在Kubernetes中,授权(authorization)是在认证(authentication)之后的一个步骤。 授权就是决定一个用户(普通用户或ServiceAccount)是否有权请求Kubernetes API做某些事情。
1.Kubernetes简介 1.1 Kubernetes和微服务 在介绍Kubernetes之前,我们先来了解一下云原生架构。 云原生的概念最早在2013年由Pivotal的Matt Stine提出。 经过社区不断完善, 包括Agile Infrastructure, Continuous Delivery, DevOps, Microservices, 12 Factor App等几大主题 。 这几大主题都是一些理论或实践方法,伴随着这些理论和实践必然存在一系列的平台和工具。
1.集群管理 1.1 启动和停止各组件 查看当前节点的systemd unit服务: systemctl list-units 'ceph*' --type=service UNIT LOAD ACTIVE SUB DESCRIPTION [email protected] loaded active running Ceph cluster manager daemon [email protected] loaded active running Ceph cluster monitor daemon [email protected] loaded active running Ceph object storage daemon osd.0 [email protected] loaded active running Ceph rados gateway 查看某个服务是否开机启动:
本文记录在测试环境中部署Ceph Kraken的完整过程。 我们的线上环境主要使用Ceph的块存储RBD作为Kubernetes的存储卷,同时使用Ceph的对象存储RGW作为各种服务的对象存储,最后对这两种使用场景做一个整理。 环境准备 192.168.61.41 node1 - admin-node, deploy-node, mon, osd.0 192.168.61.42 node2 - mon, osd.1 192.168.61.43 node3 - mon, osd.2 在node1上配置Ceph yum源 /etc/yum.repos.d/ceph.repo, 根据GET PACKAGES选择kraken的地址: