精选列表

搜索[K8s],共3895篇文章
优秀的个人博客,低调大师

k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)

命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectlrunnginx-deployment--image=nginx:1.7.9--replicas=2 在命令行中通过参数指定资源的属性。 2. 通过配置文件和kubectl apply创建,要完成前面同样的工作,可执行命令: kubectlapply-fnginx.yml nginx.yml 的内容为: 资源的属性写在配置文件中,文件格式为 YAML。 下面对这两种方式进行比较。 基于命令的方式: 简单直观快捷,上手快。 适合临时测试或实验。 基于配置文件的方式: 配置文件描述了What,即应用最终要达到的状态。 配置文件提供了创建资源的模板,能够重复部署。 可以像管理代码一样管理部署。 适合正式的、跨环境的、规模化部署。 这种方式要求熟悉配置文件的语法,有一定难度。 后面我们都将采用配置文件的方式,大家需要尽快熟悉和掌握。 kubectl apply不但能够创建 Kubernetes 资源,也能对资源进行更新,非常方便。不过 Kubernets 还提供了几个类似的命令,例如kubectl create、kubectl replace、kubectl edit和kubectl patch。 为避免造成不必要的困扰,我们会尽量只使用kubectl apply, 此命令已经能够应对超过 90% 的场景,事半功倍。 下节我们来分析一个 Deployment 的配置文件。 书籍: 1.《每天5分钟玩转Docker容器技术》https://item.jd.com/16936307278.html2.《每天5分钟玩转OpenStack》https://item.jd.com/12086376.html 本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2065285

优秀的个人博客,低调大师

k8s 如何 Failover?- 每天5分钟玩转 Docker 容器技术(127)

上一节我们有 3 个 nginx 副本分别运行在 k8s-node1 和 k8s-node2 上。现在模拟 k8s-node2 故障,关闭该节点。 等待一段时间,Kubernetes 会检查到 k8s-node2 不可用,将 k8s-node2 上的 Pod 标记为Unknown状态,并在 k8s-node1 上新创建两个 Pod,维持总副本数为 3。 当 k8s-node2 恢复后,Unknown的 Pod 会被删除,不过已经运行的 Pod 不会重新调度回 k8s-node2。 删除nginx-deployment: 下一节我们学习如何控制 Pod 运行的位置。 书籍: 1.《每天5分钟玩转Docker容器技术》https://item.jd.com/16936307278.html2.《每天5分钟玩转OpenStack》https://item.jd.com/12086376.html 本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2067968

优秀的个人博客,低调大师

FAQ宝典之Rancher Server、K8s、Docker

Rancher FAQ宝典系列第二弹,Rancher Agent、Kubernetes、Docker相关的常见问题,本文一网打尽。 Rancher Agent常见问题 1、Rancher Agent无法启动的原因是什么? 1.1、添加 --NAME RANCHER-AGENT(老版本) 如果你从UI中编辑docker run .... rancher/agent...命令并添加--name rancher-agent选项,那么Rancher Agent将启动失败。Rancher Agent在初始运行时会启动3个不同容器,一个是运行状态的,另外两个是停止状态的。Rancher Agent要成功连接到Rancher Server必须要有两个名字分别为rancher-agent和rancher-agent-state的容器,第三个容器是docker自动分配的名称,这个容器会被移除。 1.2、使用一个克隆的虚拟机 如果你使用了克隆其他Agent主机的虚拟机并尝试注册它,它将不能工作。在rancher-agent容器的日志中会产生ERROR: Please re-register this agent.字样的日志。Rancher主机的唯一ID保存在/var/lib/rancher/state,因为新添加和虚拟机和被克隆的主机有相同的唯一ID,所以导致无法注册成功。 解决方法是在克隆的VM上运行以下命令: rm -rf /var/lib/rancher/state; docker rm -fv rancher-agent; docker rm -fv rancher-agent-state 完成后可重新注册。 2、我在哪里可以找到Rancher agent容器的详细日志? 从v1.6.0起,在rancher-agent容器上运行docker logs将提供agent相关的所有日志。 3、主机是如何自动探测IP的?我该怎么去修改主机IP?如果主机IP改变了(因为重启),我该怎么办? 当Agent连接Rancher Server时,它会自动检测Agent的IP。有时,自动探测的IP不是你想要使用的IP,或者选择了docker网桥的IP,如. 172.17.x.x。或者,你有一个已经注册的主机,当主机重启后获得了一个新的IP, 这个IP将会和Rancher UI中的主机IP不匹配。你可以重新配置“CATTLE_AGENT_IP”设置,并将主机IP设置为你想要的。当主机IP地址不正确时,容器将无法访问管理网络。要使主机和所有容器进入管理网络,只需编辑添加自定义主机的命令行,将新的IP指定为环境变量“CATTLE_AGENT_IP”。在主机上运行编辑后的命令。不要停止或删除主机上的现有的Rancher Agent容器! sudo docker run -d -e CATTLE_AGENT_IP=<NEW_HOST_IP> --privileged \ -v /var/run/docker.sock:/var/run/docker.sock \ rancher/agent:v0.8.2 http://SERVER_IP:8080/v1/scripts/xxxx 4、错误提示如下:INFO: Attempting to connect to:http://192.168.xx.xx:8080/v1ERROR:http://192.168.xx.xx:8080/v1is not accessible (Failed to connect to 192.168.xx.xx port 8080: No route to host) 这个问题主要有以下几种情况: RANCHER SERVER服务器防火墙没有开通8080端口; 云平台安全组没有放行8080端口; Agent 服务器没有开启IP转发规则 [为什么我的容器无法连接到网络?]:{site.baseurl}}/rancher/faqs/ troubleshooting/1为什么我的容器无法连接到网络; =1为开启,=0为关闭 /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 主机hosts(/etc/hosts)文件没有配置; 5、rancher下创建的服务容器,docker inspect 查看到Entrypoint和CMD后面有/.r/r字符,这个起什么作用? ./r 是基于weave wait编译出来的。CNI网络下会添加/.r/r 这个参数,目的是:当容器启动时,其实网络设备还没设置好,这时候需要container 等待,不能启动真实业务,否则会失败。 6、添加hosts后 server上没有列出,agent报Host not registered yet. Sleeping 1 second and trying again.” Attempt=0 reportedUuid=752031dd-8c7e-4666-5f93-020d7f4da5d3 检查主机名和hosts配置, hosts中需要配置: 127.0.0.1 localhost hostip hostname Kubernetes常见问题 1、部署Kubernetes时候出现以下有关cgroup的问题 Failed to get system container stats for "/system.slice/kubelet.service": failed to get cgroup stats for "/system.slice/kubelet.service": failed to get container info for "/system.slice/kubelet.service": unknown container "/system.slice/kubelet.service" Expected state running but got error: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"mountpoint for devices not found\"" 以上问题为Kubernetes版本与docker版本不兼容导致cgroup功能失效 2、Kubernetes err: [nodes "iZ2ze3tphuqvc7o5nj38t8Z" not found]” Rancher-Kubernetes中,节点之间通信需要通过hostname,如果没有内部DNS服务器,那么需要为每台节点配置hosts文件。 配置示例:假如某个节点主机名为node1,ip 地址为192.168.1.100 cat /etc/hosts<<EOF 127.0.0.1 localhost 192.168.1.100 node1 EOF 3、如何验证你的主机注册地址设置是否正确? 如果你正面临Rancher Agent和Rancher Server的连接问题,请检查主机设置。当你第一次尝试在UI中添加主机时,你需要设置主机注册的URL,该URL用于建立从主机到Rancher Server的连接。这个URL必须可以从你的主机访问到。为了验证它,你需要登录到主机并执行curl命令: curl -i <Host Registration URL you set in UI>/v1 你应该得到一个json响应。如果开启了认证,响应代码应为401。如果认证未打开,则响应代码应为200。 注意:普通的HTTP请求和websocket连接(ws://)都将被使用。如果此URL指向代理或负载平衡器,请确保它们可以支持Websocket连接。 4、Kuberbetes UI显示Service unavailable 很多同学正常部署Kuberbetes环境后无法进入Dashboard,基础设施应用栈均无报错。但通过查看 基础架构|容器 发现并没有Dashboard相关的容器.因为Kuberbetes在拉起相关服务(如Dashboard、内置DNS等服务)是通过应用商店里面的YML文件来定义的,YML文件中定义了相关的镜像名和版本。 而Rancher部署的Kuberbetes应用栈属于Kuberbetes的基础框架,相关的镜像通过dockerhub/rancher 仓库拉取。默认Rancher-catalog Kuberbetes YML中服务镜像都是从谷歌仓库拉取,在没有科学上网的情况下,国内环境几乎无法成功拉取镜像。 为了解决这一问题,优化中国区用户的使用体验,在RANCHER v1.6.11之前的版本,我们修改了http://git.oschina.net/rancher/rancher-catalog 仓库中的YML文件,将相关的镜像也同步到国内仓库,通过替换默认商店地址来实现加速部署;在RANCHER v1.6.11及之后的版本,不用替换商店catalog地址,直接通过在模板中定义仓库地址和命名空间就行实现加速;在后期的版本种,Kuberbetes需要的镜像都会同步到docker hub中。 安装方法见:《原生加速中国区Kubernetes安装》,《Rancher-k8s加速安装文档》 Docker常见问题 1、镜像下载慢,如何提高下载速度? touch /etc/docker/daemon.json cat >> /etc/docker/daemon.json <<EOF { "insecure-registries": ["0.0.0.0/0"], "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com"] } EOF systemctl daemon-reload && systemctl restart docker PS:0.0.0.0/0 表示信任所有非https地址的镜像仓库,对于内网测试,这样配置很方便。对于线上生产环境,为了安全请不要这样配置 2、如何配置Docker后端存储驱动? 以overlay为例 touch /etc/docker/daemon.json cat >> /etc/docker/daemon.json <<EOF { "storage-driver": "overlay" } EOF systemctl daemon-reload && systemctl restart docker 3、docker info 出现 WARNING WARNING: No swap limit support WARNING: No kernel memory limit support WARNING: No oom kill disable support 编辑/etc/default/grub文件,并设置:GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" 接着 SUSE grub2-mkconfig -o /boot/grub2/grub.cfg Cetos Update grub Ubuntu update-grub 4、我怎么通过rancher让docker里的程序代理上网呢? 启动容器的时候,加一下 -e http_proxy= -e https_proxy= 5、Docker错误:无法删除文件系统 一些基于容器的实用程序(例如Google cAdvisor)会将Docker系统目录(如/ var / lib / docker /)挂载到容器中。例如,cadvisor的文档指示您运行cadvisor容器,如下所示: $ sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest 当挂载/var/lib/docker/时,这会有效地将所有其他正在运行的容器的所有资源作为文件系统安装在挂载/var/lib/docker/的容器中。当您尝试删除这些容器中的任何一个时,删除尝试可能会失败,出现如下所示的错误: Error: Unable to remove filesystem for 74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515: remove /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm: Device or resource busy 如果将/var/lib/docker/在/var/lib/docker/中的文件系统句柄上使用statfsor或fstatfs并且不关闭它们的容器,就会发生此问题。 通常,我们会以这种方式建议禁止挂载/var/lib/docker。然而,cAdvisor的核心功能需要这个绑定挂载。 如果您不确定是哪个进程导致错误中提到的路径繁忙并阻止它被删除,则可以使用lsof命令查找其进程。例如,对于上面的错误: sudo lsof /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f65 本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/2050097

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。