rancher k8s 对接 ceph 存储

原文链接:https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/ 本文编写的前提是已有正常工作的 ceph 存储服务,并且 Rancher 集群能正常访问 ceph 存储服务,另外这里我们对接的...
继续阅读 »

原文链接:https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/


本文编写的前提是已有正常工作的 ceph 存储服务,并且 Rancher 集群能正常访问 ceph 存储服务,另外这里我们对接的是 Rancher 持久化存储的存储类。\


随着 UI 翻译的更新,可能有些参数名称与实际名称不相同。


配置 ceph secret

Rancher 连接 ceph 集群需要 ceph secret,在 ceph 服务器中执行以下命令生成 ceph secret:


BASH
ceph auth get-key client.admin |base64

clip_image002.png


创建 secret 对象

将 key 替换为实际 ceph 的 secret,然后 import yaml 到 rancher 集群。


BASH
apiVersion: v1
kind: Secret
metadata:
type: “kubernetes.io/rbd”
data:
key: QVFEMDJ1VmE0L1pxSEJBQUtTUnFwS3JFVjErRjFNM1kwQ2lyWmc9PQ==

clip_image003.png


UI 配置存储类


  1. 进入集群视图,在存储菜单下选择存储类
    clip_image004.png
  2. 设置存储名称,并选择 ceph-rbd 类
    image-20181111221714979.pngclip_image005.png
  3. 配置 ceph-rbd 参数,填写对应的 ceph-monitor 地址和管理员 ID (), 还有 secret-name



    • 监控:ceph-monitor 地址


    • 管理员 ID:ceph-monitor 登录账户


    • 管理密文命名空间:管理密文导入的命名空间,根据实际导入的命名空间填写
      clip_image006.png



  4. 点击页面最下方的保存
    clip_image007.png

创建应用并挂载数据卷

方法一:手动创建卷再挂载


  1. 切换到项目视图,依次点击工作负载 / 数据卷 / 添加卷
    image-20181111224750914.png
  2. 填写卷配置信息,比如选择对应的存储类和卷的大小
    clip_image008.png
  3. 点击页面下方的创建
    clip_image009.png
  4. 创建工作负载,选择对应的存储卷和挂载的目录
    clip_image010.pngclip_image011.pngclip_image012.png
  5. 通过 web终端登录 Pod 查看挂载情况
    clip_image013.png
  6. 登录 ceph server 查看
    clip_image014.png

方法二:创建应用的时候同时创建卷


  1. 创建工作负载,配置数据卷选择添加新的持久化卷(声明)
    clip_image015.png
  2. 配置相应参数,比如添加卷声明名称,选择对应的存储类容量大小
    clip_image016.png
  3. 配置容器的挂载路径
    clip_image017.png
  4. 启动工作负载并登录容器查看卷挂载
    clip_image018.png
  5. 登录 ceph server 查看
    clip_image014.png

常见问题

image-20191105174349181.png


如果出现以上问题,请检查 worker 节点上是否有加载 RBD 模块。执行 lsmod | grep rbd 查看是否有信息返回,如果没有则执行 modprobe rbd 进行模块加载。

收起阅读 »

复用 Released 状态的 pv

文章来源: https://www.xtplayer.cn/kubernetes/reuse-released-pv/PV 回收策略当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除,从而允许 该资源被回收再利用。PersistentVolu...
继续阅读 »

文章来源: https://www.xtplayer.cn/kubernetes/reuse-released-pv/


PV 回收策略

当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除,从而允许 该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群,当其被 从申领中释放时如何处理该数据卷。 目前,数据卷可以被 Retained(保留)、Recycled(回收,Recycle 已被废弃)或 Deleted(删除)。

保留(Retain)

回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象 被删除时,PersistentVolume 卷仍然存在,对应的数据卷被视为” 已释放(released)”。 由于卷上仍然存在这前一申领人的数据,该卷还不能用于其他申领。 管理员可以通过下面的步骤来手动回收该卷:

  1. 删除 PersistentVolume 对象。与之相关的、位于外部基础设施中的存储资产 (例如 AWS EBS、GCE PD、Azure Disk 或 Cinder 卷)在 PV 删除之后仍然存在。
  2. 根据情况,手动清除所关联的存储资产上的数据。
  3. 手动删除所关联的存储资产;如果你希望重用该存储资产,可以基于存储资产的 定义创建新的 PersistentVolume 卷对象。

删除(Delete)

对于支持 Delete 回收策略的卷插件,删除动作会将 PersistentVolume 对象从 kubernetes 中移除,同时也会从外部基础设施(如 AWS EBS、GCE PD、Azure Disk 或 Cinder 卷)中移除所关联的存储资产。 动态供应的卷会继承其 StorageClass 中设置的回收策略,该策略默认 为 Delete。 管理员需要根据用户的期望来配置 StorageClass;否则 PV 卷被创建之后必须要被 编辑或者修补。参阅更改 PV 卷的回收策略.

参考:https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#reclaiming

准备测试 pv 和 pvc

  1. 点击 集群 | 存储 | 持久卷,点击右侧添加 pv:

    image-20201208191644698.png
  2. 进入任意项目,点击 PVC,然后点击右侧 添加 pvc

    image-20201208191446393.pngimage-20201208191718549.pngimage-20201208191812212.png

通过命令查看 pv 和 pvc yaml 配置

  • pv

    YAML
    hxl@rancher:~$ kubectl get pv test-path-pv -oyaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    annotations:
    field.cattle.io/creatorId: user-wf5x7
    pv.kubernetes.io/bound-by-controller: “yes”
    creationTimestamp: “2020-12-08T11:17:06Z”
    finalizers:
    - kubernetes.io/pv-protection
    labels:
    cattle.io/creator: norman
    name: test-path-pv
    resourceVersion: “24187470”
    selfLink: /api/v1/persistentvolumes/test-path-pv
    uid: 99f719ba-3314-48f3-9473-11e0b19a8806
    spec:
    accessModes:
    - ReadWriteOnce
    capacity:
    storage: 10Gi
    claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: test-path-pvc
    namespace: default
    resourceVersion: “24187465”
    uid: 88a75ff5-232a-44d5-8bbd-933fb325b80f
    hostPath:
    path: /tmp/test-path-pv
    type: “”
    persistentVolumeReclaimPolicy: Retain
    volumeMode: Filesystem
    status:
    phase: Bound
  • pvc

    YAML
    hxl@rancher:~$ kubectl get pvc test-path-pvc -oyaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    annotations:
    field.cattle.io/creatorId: user-wf5x7
    pv.kubernetes.io/bind-completed: “yes”
    creationTimestamp: “2020-12-08T11:17:57Z”
    finalizers:
    - kubernetes.io/pvc-protection
    labels:
    cattle.io/creator: norman
    name: test-path-pvc
    namespace: default
    resourceVersion: “24187481”
    selfLink: /api/v1/namespaces/default/persistentvolumeclaims/test-path-pvc
    uid: 88a75ff5-232a-44d5-8bbd-933fb325b80f
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 10Gi
    storageClassName: “”
    volumeMode: Filesystem
    volumeName: test-path-pv
    status:
    accessModes:
    - ReadWriteOnce
    capacity:
    storage: 10Gi
    phase: Bound

在 pv 的 spec.claimRef 可以看到对应 pvc 的具体信息,重要的有 name、namespace、uid。

测试删除 pvc

image-20201208192929197.png

因为 pv 的 persistentVolumeReclaimPolicy 属性为 Retain,在删除 pvc 后 pv,会自动保留,所以 pv 状态变为 Released

image-20201208193132639.png

编辑 pv

为了 pv 可以重新被挂载,需要执行 kubectl edit pv test-path-pv 命令,清理 spec.claimRef 中的内容,以使 pv 成为可用状态。

image-20201208193355828.pngimage-20201208193605364.png

重新创建 pvc

进入任意项目,点击 PVC,然后点击右侧 添加 pvc

image-20201208193745013.pngimage-20201208193825152.png

收起阅读 »

rancher k8s 使用 iscsi 存储

完整文章: https://www.xtplayer.cn/rancher/rancher-k8s-use-iscsi-storage/iSCSI 命名约定iSCSI 使用一种特殊、唯一的名称来标识 iSCSI 节点(目标或启动器)。此名称类似于与光纤通道设备...
继续阅读 »

完整文章: 

https://www.xtplayer.cn/rancher/rancher-k8s-use-iscsi-storage/


iSCSI 命名约定

iSCSI 使用一种特殊、唯一的名称来标识 iSCSI 节点(目标或启动器)。此名称类似于与光纤通道设备相关联的全球名称 (WWN),可作为一种通用的节点识别方式使用。iSCSI 名称通过两种不同方式格式化。最常见的是 IQN 格式。有关 iSCSI 命名要求和字符串配置文件的更多详细信息,请参见 IETF 网站上的 RFC 3721 和 RFC 3722。

iSCSI 限定名 (IQN) 格式

IQN 格式采用 iqn.yyyy-mm.naming-authority:unique name 的形式,其中:

  • yyyy-mm 是命名机构成立的年份和月份。

  • naming-authority 通常是命名机构的 Internet 域名的反向语法。例如,iscsi.vmware.com 命名机构的 iSCSI 限定名形式可能是 iqn.1998-01.com.vmware.iscsi。此名称表示 vmware.com 域名于 1998 年 1 月注册,iscsi 是一个由 vmware.com 维护的子域。

  • unique name 是希望使用的任何名称,如主机的名称。命名机构必须确保在冒号后面分配的任何名称都是唯一的,

    例如:

BASH
iqn.1998-01.com.vmware.iscsi:name1

iqn.1998-01.com.vmware.iscsi:name2

iqn.1998-01.com.vmware.iscsi:name999

企业唯一标识符 (EUI) 格式

EUI 格式采用 eui.16 hex digits 的形式。例如: eui.0123456789ABCDEF。

16 位十六进制数字是 IEEE EUI(扩展唯一标识符)格式的 64 位数的文本表示形式。前 24 位是 IEEE 向特定公司注册的公司 ID。后 40 位由持有该公司 ID 的实体分配,并且必须是唯一的。

更新 Kubernetes 集群 (可选)

Rancher 安装的 Kubernetes 集群,利用 iSCSI 启动器工具在 iSCSI 卷上存储数据,该工具嵌入在 kubelet 的 rancher/hyperkubeDocker 镜像中。在某些情况下,安装在 kubelet 容器中的启动器和 iscsi 服务器版本可能不匹配,从而导致连接失败。

如果遇到此问题,可以将集群中每个节点上安装启动器工具,然后将启动器工具映射到 kubelet 容器来解决版本问题。

平台包裹名字安装命令
Ubuntu/Debianopen-iscsisudo apt install open-iscsi
RHELiscsi-initiator-utilsyum install iscsi-initiator-utils -y

在节点上安装启动器工具后,编辑集群 YAML,编辑 kubelet 配置挂载主机 SCSI 二进制文件和配置目录,如下面的示例所示。

在更新 Kubernetes YAML 之前,请确保在集群节点上安装了 open-iscsi(deb)或 iscsi-initiator-utils(yum)软件包。如果在 Kubernetes YAML 中创建绑定挂载 之前 未安装此软件包,Docker 将自动在每个节点上创建目录和文件。

YAML
services:
kubelet:
extra_binds:
- "/etc/iscsi:/etc/iscsi"
- "/sbin/iscsiadm:/sbin/iscsiadm"
收起阅读 »

Rancher2.0常见问题

1、出现大量Failed Pod [url=https://forums.cnrancher.com/uploads/image/fujian/20180703/1530582617123768.png][img]https://forums.cnranche...
继续阅读 »
1、出现大量Failed Pod

这个问题可能是磁盘满了,执行 kubectl describe pod  --all-namespaces 查看日志 收起阅读 »

Rancher2.0UI无法删除工作负载

kubectl delete deployment --force xxxxxx
kubectl delete deployment --force xxxxxx

Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问

Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问   这个问题有可能是iptables把相应的转发包丢弃了   解决方法:sudo iptables -P FORWARD ACCEPT,打开全局的转发规则 ...
继续阅读 »
Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问
 
这个问题有可能是iptables把相应的转发包丢弃了
 
解决方法:sudo iptables -P FORWARD ACCEPT,打开全局的转发规则
  收起阅读 »

Docker deamon 配置参数

[code]{ "authorization-plugins": [], "data-root": "", "dns": [], "dns-opts": [], "dns-search": [], "exec-opts": [], "exec-r...
继续阅读 »
{
"authorization-plugins": [],
"data-root": "",
"dns": [],
"dns-opts": [],
"dns-search": [],
"exec-opts": [],
"exec-root": "",
"experimental": false,
"storage-driver": "",
"storage-opts": [],
"labels": [],
"live-restore": true,
"log-driver": "",
"log-opts": {},
"mtu": 0,
"pidfile": "",
"cluster-store": "",
"cluster-store-opts": {},
"cluster-advertise": "",
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"default-shm-size": "64M",
"shutdown-timeout": 15,
"debug": true,
"hosts": [],
"log-level": "",
"tls": true,
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"swarm-default-advertise-addr": "",
"api-cors-header": "",
"selinux-enabled": false,
"userns-remap": "",
"group": "",
"cgroup-parent": "",
"default-ulimits": {},
"init": false,
"init-path": "/usr/libexec/docker-init",
"ipv6": false,
"iptables": false,
"ip-forward": false,
"ip-masq": false,
"userland-proxy": false,
"userland-proxy-path": "/usr/libexec/docker-proxy",
"ip": "0.0.0.0",
"bridge": "",
"bip": "",
"fixed-cidr": "",
"fixed-cidr-v6": "",
"default-gateway": "",
"default-gateway-v6": "",
"icc": false,
"raw-logs": false,
"allow-nondistributable-artifacts": [],
"registry-mirrors": [],
"seccomp-profile": "",
"insecure-registries": [],
"no-new-privileges": false,
"default-runtime": "runc",
"oom-score-adjust": -500,
"node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],
"runtimes": {
"cc-runtime": {
"path": "/usr/bin/cc-runtime"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"--debug"
]
}
}}
收起阅读 »

2.0常见的前端状态提示

[code]'activating':      'active':          'available':       'bound':           'backedup':        'created':         'creating'...
继续阅读 »
'activating':   
  'active':       
  'available':    
  'bound':        
  'backedup':     
  'created':      
  'creating':     
  'deactivating': 
  'degraded':     
  'disconnected': 
  'error':        
  'erroring':     
  'expired':      
  'healthy':       
  'inactive':     
  'initializing': 
  'migrating':    
  'paused':       
  'provisioning': 
  'pending':      
  'purged':       
  'purging':      
  'reconnecting': 
  'registering':  
  'released':     
  'reinitializing':
  'removed':      
  'removing':     
  'requested':    
  'restarting':   
  'restoring':    
  'running':      
  'starting':     
  'stopped':      
  'stopping':     
  'succeeded':    
  'terminated':   
  'unavailable':  
  'unhealthy':    
  'unknown':      
  'updating':     
  'waiting':
收起阅读 »

Rancher1.6常见故障排查与修复方法

一、服务/容器1、为什么我只能编辑容器的名称? Docker容器在创建之后就不可更改了。唯一可更改的内容是我们要存储的不属于Docker容器本身的那一部分数据。 无论是停止、启动或是重新启动,它始终在使用相同的容器。如需改变任何内容都需要删除或重新创建一个容器...
继续阅读 »
一、服务/容器1、为什么我只能编辑容器的名称?
Docker容器在创建之后就不可更改了。唯一可更改的内容是我们要存储的不属于Docker容器本身的那一部分数据。 无论是停止、启动或是重新启动,它始终在使用相同的容器。如需改变任何内容都需要删除或重新创建一个容器。
你可以克隆,即选择已存在的容器,并基于已有容器的配置提前在添加服务界面中填入所有要设置的内容,如果你忘记填入某项内容,可以通过克隆来改变它之后删除旧的容器。2、service-link的容器/服务在Rancher中是如何工作的?
在Docker中,关联容器(在 
docker run
中使用
--link
)的ID和IP地址会出现在容器的
/etc/hosts
中。在Rancher中,我们不需要更改容器的
/etc/hosts
文件,而是通过运行一个内部DNS服务器来关联容器,DNS服务器会返回给我们正确的IP。3、不能通过Rancher的界面打开命令行或查看日志,如何去访问容器的命令行和日志?
Agent主机有可能会暴露在公网上,Agent上接受到的访问容器命令行或者日志的请求是不可信的。Rancher Server中发出的请求包括一个JWT(JSON Web Token),JWT是由服务器签名并且可由Agent校验的,Agent可以判断出请求是否来自服务器,JWT中包括了有效期限,有效期为5分钟。这个有效期可以防止它被长时间使用。如果JWT被拦截而且没有用SSL时,这一点尤为重要。
如果你运行
docker logs -f (rancher-agent名称或ID)
。日志会显示令牌过期的信息,随后检查Rancher Server主机和Rancher Agent主机的时钟是否同步。4、在哪里可以看到我的服务日志?
在服务的详细页中,我们提供了一个服务日志的页签日志。在日志页签中,列出了和服务相关的所有事件,包括时间戳和事件相关描述,这些日志将会保留24小时。5、RANCHER SERVER 点击WEB shell屏幕白屏
如果RANCHER SERVER 运行在V1.6.2版本,点击WEB shell出现白屏,这是UI上的一个BUG,请选择升级server服务。二、跨主机通信
如果容器运行在不同主机上,不能够ping通彼此, 可能是由一些常见的问题引起的.1、如何检查跨主机通信是否正常?
在应用->基础设施中,检查 
healthcheck
 应用的状态。如果是active跨主机通信就是正常的。
手动测试,你可以进入任何一个容器中,去ping另一个容器的内部IP。在主机页面中可能会隐藏掉基础设施的容器,如需查看点击“显示系统容器”的复选框。2、UI中显示的主机IP是否正确?
有时,Docker网桥的IP地址会被错误的作为了主机IP,而并没有正确的选择真实的主机IP。这个错误的IP通常是
172.17.42.1
或以
172.17.x.x
开头的IP。如果是这种情况,在使用
docker run
命令添加主机时,请用真实主机的IP地址来配置
CATTLE_AGENT_IP
环境变量。
 sudo docker run -d -e CATTLE_AGENT_IP= --privileged \
 -v /var/run/docker.sock:/var/run/docker.sock \
 rancher/agent:v0.8.2 http://SERVER_IP:8080/v1/scripts/xxxx
3、Rancher的默认子网(
10.42.0.0/16
)在我的网络环境中已经被使用或禁止使用,我应该怎么去更改这个子网?
Rancher Overlay网络默认使用的子网是
10.42.0.0/16
。如果这个子网已经被使用,你将需要更改Rancher网络中使用的默认子网。你要确保基础设施服务里的Network组件中使用着合适的子网。这个子网定义在该服务的
rancher-compose.yml
文件中的
default_network
里。
要更改Rancher的IPsec或VXLAN网络驱动,你将需要在环境模版中修改网络基础设施服务的配置。创建新环境模板或编辑现有环境模板时,可以通过单击编辑来配置网络基础结构服务的配置。在编辑页面中,选择配置选项 > 子网输入不同子网,点击配置。在任何新环境中将使用环境模板更新后的子网,编辑已经有的环境模板不会更改现在已有环境的子网。
这个实例是通过升级网络驱动的
rancher-compose.yml
文件去改变子网为
10.32.0.0/16
.
ipsec:
  network_driver:
    name: Rancher IPsec
    default_network:
      name: ipsec
      host_ports: true
      subnets:
      # After the configuration option is updated, the default subnet address is updated
      - network_address: 10.32.0.0/16
      dns:
      - 169.254.169.250
      dns_search:
      - rancher.internal
    cni_config:
      '10-rancher.conf':
        name: rancher-cni-network
        type: rancher-bridge
        bridge: docker0
        # After the configuration option is updated, the default subnet address is updated
        bridgeSubnet: 10.32.0.0/16
        logToFile: /var/log/rancher-cni.log
        isDebugLevel: false
        isDefaultGateway: true
        hostNat: true
        hairpinMode: true
        mtu: 1500
        linkMTUOverhead: 98
        ipam:
          type: rancher-cni-ipam
          logToFile: /var/log/rancher-cni.log
          isDebugLevel: false
          routes:
          - dst: 169.254.169.250/32


注意: 随着Rancher通过升级基础服务来更新子网,以前通过API更新子网的方法将不再适用。


4、VXLAN 网络模式下,跨主机容器无法通信
Vxlan 通过4789端口实现通信,检查防火墙有没有开放此端口;
执行 iptables -t filter -L -n 参看IPtable表, 查看chain FORWARD 是不是被丢弃,如果是,执行sudo iptables -P FORWARD ACCEPT三、DNS1、如何查看我的DNS是否配置正确?
如果你想查看Rancher DNS配置,点击应用 > 基础服务。点击
network-services
应用,选择
metadata
,在
metadata
中,找到名为
network-services-metadata-dns-X
的容器,通过UI点击执行命令行后,可以进入该容器的命令行,然后执行如下命令。
cat /etc/rancher-dns/answers.json
八、在Ubuntu上运行容器时彼此间不能正常通信。
如果你的系统开启了
UFW
,请关闭
UFW
或更改
/etc/default/ufw
中的策略为:
DEFAULT_FORWARD_POLICY="ACCEPT"
四、负载均衡1、为什么我的负载均衡一直是
Initializing
状态?
负载均衡器自动对其启用健康检查。 如果负载均衡器处于初始化状态,则很可能主机之间无法进行跨主机通信。2、我如何查看负载均衡的配置?
如果要查看负载均衡器的配置,你需要用进入负载均衡器容器内部查找配置文件,你可以在页面选择负载均衡容器的执行命令行
cat /etc/haproxy/haproxy.cfg

该文件将提供负载均衡器的所有配置详细信息。3、我在哪能找到HAproxy的日志?
HAProxy的日志可以在负载均衡器容器内找到。 负载均衡器容器的
docker logs
只提供与负载均衡器相关的服务的详细信息,但不提供实际的HAProxy日志记录。
cat /var/log/haproxy
4、如何自定义负载均衡的配置
如图,在自定义配置中,按照global、defaults、frontend、backend的格式配置,五、健康检查1、为什么健康检查服务一直显示黄色初始化状态?
healthcheck不仅为其他服务提供健康检查,对系统组件(比如调度服务)也提供健康检查服务,healthcheck也对自己进行健康检查。多个healthcheck组件时,它们会相互交叉检查,只有健康检查通过后,容器状态才会变成绿色。 而healthcheck一直显示黄色初始化状态,说明一直没有通过健康检查。健康检查都是通过网络访问的,所以一定是网络通信异常导致。六、调度
为什么节点关机后,应用没有自动调度到其他节点上? Rancher上应用的调度,需要配合健康检查功能。当健康检查检查到应用不健康才会重新调度,如果没有配置健康检查, 即使关机,cattle也不会对应用做调度处理。七、CentOS1、为什么容器无法连接到网络?
如果你在主机上运行一个容器(如:
docker run -it ubuntu
)该容器不能与互联网或其他主机通信,那可能是遇到了网络问题。 Centos默认设置
/proc/sys/net/ipv4/ip_forward
0
,这从底层阻断了Docker所有网络。
解决办法:
vi /usr/lib/sysctl.d/00-system.conf

添加如下代码:
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1

重启network服务
systemctl restart network

查看是否修改成功
sysctl net.ipv4.ip_forward

如果返回为
net.ipv4.ip_forward = 1
则表示成功了八、京东云1、京东云运行rancher server 出现以下问题

解决办法:
sudo sysctl -w net.ipv4.tcp_mtu_probing=1
九、阿里云主机运行Rancher-NFS驱动报如下错误
 

解决办法:注释掉 /etc/resolv.conf  中option 有关的行 收起阅读 »

Rancher Agent 1.6

1、Rancher Agent无法启动的原因是什么?1.1、添加 [code]--NAME RANCHER-AGENT[/code] (老版本) 如果你从UI中编辑[code]docker run .... rancher/agent...[/code]命令并...
继续阅读 »
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= --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/v1 ERROR: http://192.168.xx.xx:8080/v1 is not accessible (Failed to connect to 192.168.xx.xx port 8080: No route to host)
这个问题主要有以下几种情况:
1.RANCHER SERVER服务器防火墙没有开通8080端口;
2.云平台安全组没有放行8080端口;
3.Agent 服务器没有开启IP转发规则 [为什么我的容器无法连接到网络?]:{site.baseurl}}/rancher/faqs/ troubleshooting/1为什么我的容器无法连接到网络;
=1为开启,=0为关闭
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

4.主机hosts(
/etc/hosts
)文件没有配置;5、rancher下创建的服务容器,docker inspect 查看到Entrypoint和CMD后面有/.r/r字符,这个起什么作用?
./r 是基于weave wait编译出来的。 CNI网络下会添加/.r/r 这个参数,目的是:当容器启动时,其实网络设备还没设置好,这时候需要container 等待,不能启动真实业务,否则会失败。6、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 hostname7、Rancher cattle , 为什么添加第二台主机后会把第一台主机替换掉?
在/var/lib/rancher/ 目录下保存了每个节点的注册配置信息。如果是克隆的主机,在/var/lib/rancher/ 目录有相同的内容,当新加主机的时候会识别为重新添加某台主机,这样之前添加的主机就会被替换掉。
解决办法:新加主机时,删除/var/lib/rancher/ 目录。 收起阅读 »

Rancher Server 1.6 常见问题

1、Docker 运行Rancher server 容器应该注意什么? 需要注意运行rancher server 容器时,不要使用host模式。程序中有些地方定义的是localhost或者127.0.0.1,如果容器网络设置为host,将会去访问宿主机资源,因...
继续阅读 »
1、Docker 运行Rancher server 容器应该注意什么?
需要注意运行rancher server 容器时,不要使用host模式。程序中有些地方定义的是localhost或者127.0.0.1,如果容器网络设置为host,将会去访问宿主机资源,因为宿主机并没有相应资源,rancher server 容器启动就出错。
PS:docker命令中,如果使用了 --network host参数,那后面再使用-p 8080:8080 就不会生效。
docker run -d -p 8080:8080 rancher/server:stable

此命令仅适用于单机测试环境,如果要生产使用Rancher server,请使用外置数据库(mysql)或者通过
-v /xxx/mysql/:/var/lib/mysql -v /xxx/log/:/var/log/mysql -v /xxx/cattle/:/var/lib/cattle

把数据挂载到宿主机上。如果用外置数据库,需提前对数据库做性能优化,以保证Rancher 运行的最佳性能。2、如何导出Rancher Server容器的内部数据库?
你可以通过简单的Docker命令从Rancher Server容器导出数据库。
docker exec  mysqldump cattle > dump.sql
3、我正在运行的Rancher是什么版本的?
Rancher的版本位于UI的页脚的左侧。 如果你点击版本号,将可以查看其他组件的详细版本。4、如果我没有在Rancher UI中删除主机而是直接删除会发生什么?
如果你的主机直接被删除,Rancher Server会一直显示该主机。主机会处于
Reconnecting
状态,然后转到
Disconnected
状态。 你也可以通过添加主机再次把此节点添加到RANCHER 集群,如果不在使用此节点,可以在UI中删除。
如果你有添加了健康检查功能的服务自动调度到状态
Disconnected
主机上,CATTLE会将这些服务重新调度到其他主机上。
PS:如果使用了标签调度,如果你有多台主机就有相同的调度标签,那么服务会调度到其他具有调度标签的节点上;如果选择了指定运行到某台主机上,那主机删除后你的应用将无法在其他主机上自动运行。
5、我如何在代理服务器后配置主机?
要在代理服务器后配置主机,你需要配置Docker的守护进程。详细说明参考在代理服务器后添加自定义主机。6、为什么同一主机在UI中多次出现?
宿主机上
var/lib/rancher/state
这个文件夹,这是Rancher用来存储用于标识主机的必要信息. .registration_token中保存了主机的验证信息,如果里面的信息发生变化,RANCHER会认为这是一台新主机, 在你执行添加主机后,UI上将会出现另外一台相同的主机,第一台主机接着处于失联状态。7、在哪能找到 Rancher Server 容器的详细日志?
运行
docker logs
可以查看在Rancher Server容器的基本日志。要获取更详细的日志,你可以进入到Rancher Server容器内部并查看日志文件。
进入 Rancher Server 容器内部
docker exec -it  bash

跳转到 Cattle 日志所在的目录下cd /var/lib/cattle/logs/
cat cattle-debug.log

在这个目录里面会出现
cattle-debug.log
cattle-error.log
。 如果你长时间使用此Rancher Server,你会发现我们每天都会创建一个新的日志文件。8、将Rancher Server的日志复制到主机上。
以下是将Rancher Server日志从容器复制到主机的命令。
docker cp :/var/lib/cattle/logs /local/path
9、如果Rancher Server的IP改变了会怎么样?
如果更改了Rancher Server的IP地址,你需要用新的IP重新注册主机。
在Rancher中,点击系统管理->系统设置更新 Rancher Server的主机注册地址。注意必须包括Rancher Server暴露的端口号。默认情况下我们建议按照安装手册中使用8080端口。
主机注册更新后,进入基础架构->添加主机->自定义。 添加主机的
docker run
命令将会更新。 使用更新的命令,在Rancher Server的所有环境中的所有主机上运行该命令。10、Rancher Server运行变得很慢,怎么去优化它?
很可能有一些任务由于某些原因而处于僵死状态,如果你能够用界面查看系统管理 -> 系统进程,你将可以看到
Running
中的内容,如果这些任务长时间运行(并且失败),则Rancher会最终使用太多的内存来跟踪任务。这使得Rancher Server处于了内存不足的状态。
为了使服务变为可响应状态,你需要添加更多内存。通常4GB的内存就够了。
你需要再次运行Rancher Server命令并且添加一个额外的选项
-e JAVA_OPTS="-Xmx4096m"
docker run -d -p 8080:8080 --restart=unless-stopped -e JAVA_OPTS="-Xmx4096m" rancher/server

根据MySQL数据库的设置方式的不同,你可能需要进行升级才能添加该选项。
如果是由于缺少内存而无法看到系统管理 -> 系统进程的话,那么在重启Rancher Server之后,已经有了更多的内存。你现在应该可以看到这个页面了,并可以开始对运行时间最长的进程进行故障分析。11、Rancher Server数据库数据增长太快.
Rancher Server会自动清理几个数据库表,以防止数据库增长太快。如果对你来说这些表没有被及时清理,请使用API来更新清理数据的时间间隔。
在默认情况下,产生在2周以前的
container_event
service_event
表中的数据则数据会被删除。在API中的设置是以秒为单位的(
1209600
)。API中的设置为
events.purge.after.seconds
.
默认情况下,
process_instance
表在1天前产生的数据将会被删除,在API中的设置是以秒为单位的(
86400
)。API中的设置为
process_instance.purge.after.seconds
.
为了更新API中的设置,你可以跳转到
http://:8080/v1/settings
页面, 搜索要更新的设置,点击
links -> self
跳转到你点击的链接去设置,点击侧面的“编辑”更改’值’。 请记住,值是以秒为单位。12、为什么Rancher Server升级失败导致数据库被锁定?
如果你刚开始运行Rancher并发现它被永久冻结,可能是liquibase数据库上锁了。在启动时,liquibase执行模式迁移。它的竞争条件可能会留下一个锁定条目,这将阻止后续的流程。
如果你刚刚升级,在Rancher Server日志中,MySQL数据库可能存在尚未释放的日志锁定。
....liquibase.exception.LockException: Could not acquire change log lock. Currently locked by 
释放数据库锁


注意: 请不要释放数据库锁,除非有相关日志锁的异常。如果是由于数据迁移导致升级时间过长,在这种情况下释放数据库锁,可能会使你遇到其他迁移问题。


如果你已根据升级文档创建了Rancher Server的数据容器,你需要
exec
rancher-data
容器中升级
DATABASECHANGELOGLOCK
表并移除锁,如果你没有创建数据容器,你用
exec
到包含有你数据库的容器中。
sudo docker exec -it  mysql

一旦进入到 Mysql 数据库, 你就要访问
cattle
数据库。
mysql> use cattle;

检查表中是否有锁mysql> select * from DATABASECHANGELOGLOCK;

更新移除容器的锁mysql> update DATABASECHANGELOGLOCK set LOCKED="", LOCKGRANTED=null, LOCKEDBY=null where ID=1;

检查锁已被删除mysql> select * from DATABASECHANGELOGLOCK;
+----+--------+-------------+----------+
| ID | LOCKED | LOCKGRANTED | LOCKEDBY |
+----+--------+-------------+----------+
|  1 |        | NULL        | NULL     |
+----+--------+-------------+----------+
1 row in set (0.00 sec)
13、管理员密码忘记了,我该如何重置管理员密码?
如果你的身份认证出现问题(例如管理员密码忘记),则可能无法访问Rancher。 要重新获得对Rancher的访问权限,你需要在数据库中关闭访问控制。 为此,你需要访问运行Rancher Server的主机。
ps:假设在重置访问控制之前有创建过其他用户,那么在认证方式没有变化的情况下,重置访问控制除了超级管理员(第一个被创建的管理员,ID为1a1),其他用户账号信息不会受影响。
  • 假设数据库为rancher内置数据库
docker exec -it  mysql

注意: 这个 

是具有Rancher数据库的容器。 如果你升级并创建了一个Rancher数据容器,则需要使用Rancher数据容器的ID而不是Rancher Server容器,rancher内置数据库默认密码为空。

  • 选择Cattle数据库。
mysql> use cattle;
  • 查看
    setting
    表。
mysql> select * from setting;
  • 更改
    api.security.enabled
    false
    ,并清除
    api.auth.provider.configured
    的值。
# 关闭访问控制mysql> update setting set value="false" where name="api.security.enabled";# 清除认证方式mysql> update setting set value="" where name="api.auth.provider.configured";
  • 确认更改在
    setting
    表中是否生效。
mysql> select * from setting;
  • 可能需要约1分钟才能在用户界面中关闭身份认证,然后你可以通过刷新网页来登陆没有访问控制的Rancher Server

关闭访问控制后,任何人都可以使用UI/API访问Rancher Server。

  • 刷新页面,在系统管理访问控制 重新开启访问控制。重新开启访问控制填写的管理员用户名将会替换原有的超级管理员用户名(ID为1a1 )。

14、Rancher Compose Executor和Go-Machine-Service不断重启.
在高可用集群中,如果你正在使用代理服务器后,如果rancher-compose-executor和go-machine-service不断重启,请确保你的代理使用正确的协议。15、我怎么样在代理服务器后运行Rancher Server?
请参照在HTTP代理后方启动Rancher Server.16、为什么在日志中看到Go-Machine-Service在不断重新启动? 我该怎么办?
Go-machine-service是一种通过websocket连接到Rancher API服务器的微服务。如果无法连接,则会重新启动并再次尝试。如果你运行的是单节点的Rancher Server,它将使用你为主机注册地址来连接到Rancher API服务。 检查从Rancher Sever容器内部是否可以访问主机注册地址。
docker exec -it  bash
在 Rancher-Server 容器内
curl -i /v1

你应该得到一个json响应。 如果认证开启,响应代码应为401。如果认证未打开,则响应代码应为200。 验证Rancher API Server 能够使用这些变量,通过登录go-machine-service容器并使用你提供给容器的参数进行
curl
命令来验证连接:
docker exec -it  bash
在go-machine-service 容器内
curl -i -u ':

你应该得到一个json响应和200个响应代码。 如果curl命令失败,那么在
go-machine-service
和Rancher API server之间存在连接问题。 如果curl命令没有失败,则问题可能是因为go-machine-service尝试建立websocket连接而不是普通的http连接。 如果在go-machine-service和Rancher API服务器之间有代理或负载平衡,请验证代理是否支持websocket连接。17、rancher catalog 多久同步一次
http://X.X.X.X/v1/settings/catalog.refresh.interval.seconds 默认300秒 可以修改 点setting会立即更新18、Rancher server cattle-debug.log 文件占满磁盘的问题
这个问题主要在Rancher server 1.6.11 之前(1.6.11 已经解决)
目前是按天来创建日志文件, 如果日志文件太多会进行日志分段,每一段默认100M, 默认情况下,系统保留5个分段。 通过打开http://rancher_url:8080/v2-beta/settings ,网页搜索 logback 可以看到以下内容,
{"id": "logback.max.file.size","type": "activeSetting","links": {"self": "…/v2-beta/settings/logback.max.file.size"},"actions": { },"baseType": "setting","name": "logback.max.file.size","activeValue": "100MB","inDb": false,"source": "Code Packaged Defaults","value": "100MB"},{"id": "logback.max.history","type": "activeSetting","links": {"self": "…/v2-beta/settings/logback.max.history"},"actions": { },"baseType": "setting","name": "logback.max.history","activeValue": "5","inDb": false,"source": "Code Packaged Defaults","value": "5"},

点击self 后的相应类型,比如”self”: “…/v2-beta/settings/logback.max.history” 可以做相应参数调整。
相应issue:https://github.com/rancher/rancher/issues/988719、Rancher server 如何免密更新Catalog
在配置 私有仓库地址的时候,添加用户名和密码
https://{username}:{password}@github.com/{repo}
20、修改server 日志等级
默认情况下,server日志记录等级为INFO,可以按照以下方法修改:
通过打开 http://rancher_url:8080/v2-beta/settings/auth.service.log.level ,

点击编辑 修改


点击show Request,再点击send Request.

收起阅读 »

Rancher-Ceph卷驱动部署

操作步骤Ceph 服务端安装如果没有Ceph 服务器,可以通过容器运行一个Ceph 服务器 DEMO环境:docker run -d –net=host -v /etc/ceph:/etc/ceph -e MON_IP=172.18.0.11 -e CEPH_...
继续阅读 »

操作步骤Ceph 服务端安装
如果没有Ceph 服务器,可以通过容器运行一个Ceph 服务器 DEMO环境:
docker run -d –net=host -v /etc/ceph:/etc/ceph -e MON_IP=172.18.0.11 -e CEPH_PUBLIC_NETWORK=172.18.0.0/24 ceph/demtag-build-master-jewel-ubuntu-16.04
IP地址根据实际情况修改。


把Ceph 服务容器所在宿主机/etc/ceph路径下所有文件复制到Rancher 环境下所有节点的相同路径下。Rancher下Ceph应用安装应用商店添加进入 系统管理系统设置 添加一个名为Ceph的自定义商店


名称:Ceph
地址:https://github.com/niusmallnan/rancher-rbd-catalog.git
分支:masterCeph应用安装
进入应用商店,搜索RBD进行安装。

安装完成后:

再进 系统架构存储 查看:

安装测试应用应用安装

新建一个名为myapp的空应用栈并添加服务:


红色线框为配置重点:
使用驱动卷插件与使用本地卷驱动有所区别, 使用本地卷驱动添加卷 时应该写 /AA/BB:/CC/DD,前后都要为路径; 使用驱动卷插件 时应该写为 A:/BB/CC 。 这个的A为一个卷名,不能是路径。因为我们是Ceph存储,这里需要填卷驱动为:rancher-rbd 。

部署好之后如图:

查看 基础架构存储

数据存储测试

在容器中向/root 目录下新建一个文件:

现在这个容器位于node2上, 接着把这个服务容器删除,删除后myapp应用栈为空:

接着,在空的应用栈中添加一个服务,并手动调度容器运行到其他节点上。

PS:新建的服务,参数中的卷名与卷映射路径必须相同,卷驱动也要相同。

服务运行成功,运行在node1上

查看 基础架构存储

进入容器的/root目录查看创建的文件

文件依然存在,说明文件不是存在本地,证明Ceph存储对接成功。

收起阅读 »

Rancher日志收集

引言 文档参考[url]http://www.cnrancher.com/rancher-logging/[/url] 。 一个完整的容器平台,容器日志收集也是很重要的一环。尤其在微服务架构大行其道状况下,程序的访问监控、健康状态检查很多都依赖日志信息的收集,...
继续阅读 »
引言
文档参考http://www.cnrancher.com/rancher-logging/ 。
一个完整的容器平台,容器日志收集也是很重要的一环。尤其在微服务架构大行其道状况下,程序的访问监控、健康状态检查很多都依赖日志信息的收集,由于Docker的存在,让容器平台中的日志收集和传统方式很多不一样,日志的输出和收集与以前也大有不同。本文就此探讨一下,Rancher平台内如何做容器日志收集。现状
纵览当前容器日志收集的各种解决方案,无非就是两种方式:一、直接采集Docker标准输出,通过Docker的日志驱动(log driver)可以发送到相应的收集程序中;二、非标准输出,延续传统的日志写入方式,容器内的服务将日志直接写到Log文件中,通过Docker volume映射形式,将日志文件映射到Host上,日志采集程序直接收集映射出来的Log文件。三、通Journald 收集二进制日志数据。
PS:
标准输出:即通过docker logs查看到的日志信息。Ubuntu OS下,这些信息默认保存在/var/lib/docker/containers路径下以容器ID为名的文件夹下并以容器ID为前缀的 -json.log 文件中。
非标准输出:根据Docker容器的特性,容器启动后必须有一个服务保持前台运行。如果一个容器要运行多个服务,那么按照启动顺序,前面的服务就必须得后台运行。 所以,默认情况下这些后台运行的服务产生的日志将无法以标准输出获取,产生的日志默认会存放于/var/log 目录下。
第一种方式足够简单,直接配置相关的日志驱动(Log driver)就可以,但是这种方式也有些劣势:
  1. 当主机的容器密度比较高的时候,对Docker Engine的压力比较大,毕竟容器标准输出都要通过Docker Engine来处理。
  2. 尽管原则上,我们希望遵循一容器部署一个服务的原则,但是有时候特殊情况不可避免容器内有多个业务服务,这时候很难做到所有服务都标准输出日志,这就需要用到传统的方式收集log日志。
  3. 虽然我们可以选择很多种Log Driver,但是有些Log Driver会破坏Docker原生的体验,比如,日志输出到其他日志服务器后,docker logs将无法看到容器日志。

基于以上考虑,一个完整的日志收集方案必须要同时满足标准输出收集和日志卷(非标准输出)收集或者通过journald 收集二进制日志数据 。当然完整的日志体系中,并不仅仅是采集,还需要有日志存储和UI展现。日志存储有很多种开源的实现,这个一般用户都会有自己钟情的选择。而UI展现更是各家有各家的需求,很难形成比较好的标准,一般都是通过定制化方式解决。所以此文主要展现的方案是日志采集方案,当然在存储和UI展现上会对接开源实现,没有特殊需求的情况下,也可以拥有一个完整的体验。

Rancher下的解决方案(json-file驱动)方案介绍
如上面图中所示,日志存储和UI展现可以直接使用ElasticSearch & Kibana。日志采集方面如之前所分析,需要对接两种采集模式(标准输出日志和非标准输出),本方案中,日志采集这部分采用Fluentd & Logging Helper的组合。Fluentd是很通用的日志采集程序,拥有优异的性能,相对Logstash来说同等压力下,其内存消耗要少很多。
为了要保证Dokcer和Rancher体验的完整性,之所以Docker Log Driver选择Json-file或者Journald,其原因:一、json-file和journald相对来说比较常用;二、这两种驱动下,docker logs依然可以有内容输出,保证了体验的完整性。实现流程
方案实现流程:Fluentd对接Json-file或者Journald驱动,获取标准输出日志数据或者二进制日志数据; Logging Helper可以理解为Fluentd的助手,它可以识别容器日志卷(非标准输出)映射的路径,并通知Fluentd进行采集。 Fluentd收集数据后,接着数据被传递并存储到ES,最后Kibana将ES中的数据直接展示出来。
下面开始说明,整个方案的部署过程。先用一张图来描述整体的部署结构,如下:
方案部署ElasticSearch & Kibana部署
通过web登录Rancher,进入应用商店,搜索ElasticSearch,推荐安装2.x版本。

点击查看详情, 进去后修改一下最后的Public port,默认为80端口, 改为其他端口避免端口冲突。
接着再进入应用商店搜索Kibana.

配置选项中,需选择Elasticsearch-clients

最后的Public port 根据实际情况进行修改,避免冲突。

服务正常启动后,可以通过这个端口访问Kibana web 页面。
Rancher logging服务部署目前Rancher logging不在官方仓库中,所以需要使用Rancher logging 需要添加自定义商店地址。 点击小图管理系统设置 进入, 点击添加应用商店,
名称:rancher -logging
地址: https://github.com/niusmallnan/rancher-logging-catalog.git
分支:master
最后点击保存,并返回应用商店。在应用商店中输入log进行搜索:

点击查看详情进去,进入配置页面:在本示例中,除了Elasticsearch source 如图配置外,其他保持默认:

以上部署完成之后,部署一些应用并产生一些访问日志,就可以在Kibana的界面中看到:

若要使用日志卷方式,则需要在Service启动的时候配置Volume,Volume name需要匹配之前设定的Volume Pattern:
收起阅读 »

webhook实现服务自动升级

https://www.xtplayer.cn/rancher/rancher16-webhook-auto-update/概述前面的文章我们有讲述了如何通过 Rancher-webhook 实现 Service/Host 的弹性伸缩。今天我们再来演示一下如何...
继续阅读 »

https://www.xtplayer.cn/rancher/rancher16-webhook-auto-update/

概述

前面的文章我们有讲述了如何通过 Rancher-webhook 实现 Service/Host 的弹性伸缩。今天我们再来演示一下如何通过 Rancher-webhook 对接三方的 CI 系统,实现微服务镜像的自动构建与服务的自动升级。

PS: CI 即持续集成,包括但不限于自动编译、发布和测试、自动构建,我们这里说的 CI 系统仅限于自动构建这一步。 前面已经对 webhook 做了介绍,这里不再讲解。
本文主要基于阿里云的容器镜像服务,整个流程大致如下图所示:

1527424471499000.png

基础准备

  1. 安装支持的 docker (http://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions);
  2. 安装 Rancher v1.6.11 (https://hub.docker.com/u/rancher);
  3. 因为是对接云端 CI,所以 Rancher server 需要能被公网访问;
  4. 在 GitHub 创建一个 test 仓库并上传一个 Dkoerfile 文件,文件中只写 FROM busybox 一行代码;
  5. 去 https://requestb.net/ 创建一个 RequestBin,用于接收并查看阿里云 webhook 消息的内容;

测试服务准备

  1. 登录 Rancher WEB ,进入 应用 \ 用户视图,新建名为 app 的测试应用栈;

  2. 给应用打上 test=true 的标签,其他参数保存默认;

    1527424471489800.png1527424471973045.png

    PS:这个地方的标签,是为后面通过 webhook 升级时候调取服务用,需要保证标签的唯一性,不然相同标签的服务都会被升级 测试服务已经创建好,接下来创建一条 webhook 升级策略。四、添加 webhook 接收器

  3. 通过 API 进入 webhook,点击添加接收器,配置接收器:

    1527424471650964.png1527424471986742.png
    BASH
    名称:根据喜好填写;
    类型:选择升级服务;
    镜像仓库Webhook参数格式:目前可以选择阿里云或者docker hub
    镜像标签:这个标签对应仓库中构建镜像的标签
    服务选择器标签:这里填写创建服务时填写的标签;
    其他参数保持默认
  4. 接收器创创建好后,可以点击右侧的触发地址把地址复制到其他地方备用。

    1527424471112979.png

创建阿里云测试镜像仓库

  1. 通过 dev.aliyun.com 登录阿里云容器服务,进入控制台,点击右上角创建镜像仓库

    1527424472109055.png1527424472398412.png

    ps: 选择与你服务器所在的区域,镜像可以走内网下载。 找到刚刚创建的仓库,点击管理

    1527424472425306.png
  2. 添加一条 webhook,webhook URL 为 rancher-webhook 中复制的地址。

    1527424472478305.png

测试

  1. 修改并提交 test 代码仓库中的 Dockerfile 文件 在阿里云容器服务中查看构建进度

    1527424472617034.png1527424472840600.png1527424472963414.png1527424473384612.png

查看阿里云 webhook 的信息内容

  1. 复制 http://requestbin.net/ 中创建的 RequestBin 地址

    1527424473974408.png
  2. 再在阿里云云服务中添加一条 webhook

    1527424473499533.png
  3. 再次修改并提交 test 代码仓库中的 Dockerfile 文件,并进入 https://requestb.net 页面查看:

    1527424473406928.png
  4. 再对 RAW BODY 格式化:

    1527424473804069.png

收起阅读 »

Rancher 2.0 Training Camp回顾

[size=14]第1期:使用Rancher 2.0创建Kubernetes集群[/size] [size=14]课程大纲:[/size] [list=1] [*] [size=14]从零开始搭建一个简单的Rancher 2.0环境[/size][/*] [*...
继续阅读 »
第1期:使用Rancher 2.0创建Kubernetes集群
课程大纲:
  1. 从零开始搭建一个简单的Rancher 2.0环境
  2. 纳管现有的kubernetes集群
  3. 在Rancher 2.0上通过RKE创建一个kubernetes集群
  4. 使用Aliyun驱动创建一个kubernetes集群

回放地址:http://e.vhall.com/431874021
 
 
第2期:Rancher 2.0应用部署分享
课程大纲:
  1. Workload介绍
  2. Load Balancing 介绍
  3. Services Discovery 介绍
  4. Volume 介绍
  5. 如何部署一个简单应用
  6. 如何部署一个高可用应用
  7. 如何在Rancher上使用Yaml文件部署应用

回放地址:http://e.vhall.com/209459630
 
第3期:Kubernetes上的监控告警
课程大纲:
 
  1. 如何在2.0上对Kubernetes Cluster设置告警规则
  2. 如何在2.0上对Workload设置告警规则
  3. 如何集成Prometheus、Grafana等监控组件
  4. 如何使用prometheus的Kubernetes service discovery
  5. 如何给alert manager 配置告警规则

回放地址:http://e.vhall.com/163710123
 
 
第4期:使用Rancher 2.0进行多集群角色管理
课程大纲:
  1. 介绍kubernetes认证模型和RBAC授权模型
  2. Rancher 2.0多集群统一认证授权的实现原理
  3. 如何针对不同层级做角色授权管理

回放地址:https://e.vhall.com/829906699 收起阅读 »

Chain FORWARD (policy DROP)导致nginx容器使用NodePort无法相互访问

实现:nginx POD使用NodePort相互访问,即使用自己window电脑能访问所有节点的nignx的32065端口 环境如下: rancher2.0一台 node2 \ node3 \ node4 \ node5 四台节点 操作如下: 在rancher...
继续阅读 »
实现:nginx POD使用NodePort相互访问,即使用自己window电脑能访问所有节点的nignx的32065端口
环境如下:
rancher2.0一台
node2 \ node3 \ node4 \ node5 四台节点
操作如下:
在rancher2.0Web界面Workloads新建一个nginx POD, 设置“Port Mapping” 为NodePort  (使用NodePort类型的Service时会在集群内部所有host上暴露一个端口用于外部访问默认端口范围30000~32767) ,点击“upgrade”,生效后会在name名称为:"nginx4"下方显示一个端口号(32065端口)。
测试1,点击这个32065端口可以打开nignx访问页面。
测试2,所有节点可以访问本身的IP加32065端口号,如:127.0.0.1:32065或192.168.1.101:32065
测试3,所有节点可以访问nginx POD所在节点IP,如nginx POD所在节点node2(192.168.1.100),在node3\node4\node5节点上请求:curl 192.168.1.100:32065 ,应该可以正常访问。
测试4,所有节点可以相互访问对方IP:32065,即在node3请求其它节点IP,如:curl 192.168.1.101:32065或curl 192.168.1.102:32065
测试5,使用自己windows电脑能访问所有节点IP:32065
 
总结 ,注意事项:
1,关闭防火墙(只为测试) 
2,关闭selinux
3,打开cat  /proc/sys/net/ipv4/ip_forward 为1参数
4,查看iptables -t filter -L -n “Chain FORWARD (policy DROP)” 开启这项,执行:
#sudo iptables -P FORWARD ACCEPT
#service iptables save
  收起阅读 »

Rancher2-部署问题troubleshooting

[b]一、    环境需求[/b] 推荐使用的操作系统 •    Ubuntu 16.04 (64-bit) •    Red Hat Enterprise Linux 7.5 (64-bit) •    RancherOS 1.3.0 (64-bit) [...
继续阅读 »
一、    环境需求
推荐使用的操作系统
•    Ubuntu 16.04 (64-bit)
•    Red Hat Enterprise Linux 7.5 (64-bit)
•    RancherOS 1.3.0 (64-bit)

二、推荐的硬件配置
Deployment Size   Clusters        Nodes     vCPUs   RAM
Small             Up to 10        Up to 50   2      4GB
Medium            Up to 100       Up to 500  8      32GB

三、支持的docker版本
•    1.12.6
•    1.13.1
•    17.03.02

四、防火墙请允许通过已下端口
Protocol        Port range      Purpose   
tcp              22             ssh server
tcp              80             Rancher Server/ingress
tcp              443            Rancher Server/ingress
tcp              6443           kubernetes api server
tcp              2379-2380      etcd server client api
tcp              10250-10256    kubernetes components
tcp              30000-32767    nodeport services
udp              8472           canal

五、常见问题与排查思路
1、环境信息残留
 
目前部署中,大部分问题都是因为由于部署环境的操作系统,或多次部署,升级后残留的的信息造成的。部署前或部署时,请使用以下命令将环境的各类信息清理干净
df -h|grep kubelet |awk -F % '{print $2}'|xargs umount 
rm /var/lib/kubelet/* -rf
rm /etc/kubernetes/* -rf
rm /var/lib/rancher/* -rf
rm /var/lib/etcd/* -rf
rm /var/lib/cni/* -rf
rm -rf /var/run/calico 
iptables -F && iptables -t nat -F
ip link del flannel.1
docker ps -a|awk '{print $1}'|xargs docker rm -f
docker volume ls|awk '{print $2}'|xargs docker volume rm
rm -rf /var/etcd/
rm -rf /run/kubernetes/
docker rm -fv $(docker ps -aq)
docker volume rm  $(docker volume ls)
rm -rf /etc/cni
rm -rf /opt/cni
systemctl restart docker
 
2、openssh版本过低问题
centos或rhel系统并且版本低于7.4的,因为默认的openssh和openssl和红帽系ssh默认将AllowTcpForwarding 关闭了,rke部署时会出现如下问题

参考issue:https://github.com/rancher/rke/issues/93

需要您进行以下操作
a.    确保您的openssh版本大于等于7.x
b.    修改sshd配置打开AllowTcpForwarding=yes重启sshd
c.    默认centos和rhel不能使用root用户进行ssh tunnel,所以需要使用一个普通用户
d.    并将这个用户加入docker这个Group,useradd –G docker yourusername

3、nodeport端口只有一台机器能访问
只能访问一台宿主机的nodeport,并且还是pod所在那台机器,出现这种问题很大原因是因为,跨集群网络有问题,或本地防火墙问题,排查思路如下:
在宿主机本机telnet localhost:nodeort看看是否能通,本机能通,在集群内互相telnet测试,如果不能通根部署环境网络有很大关系,建议联系网络管理员进行排查。
如果本机telnet也不能通,进行如下测试。
a、首先我们需要或取对应的pod 信息


 
比如我这个test-6b4cdf4ccb-7pzt6在rancher-kf-worker01节点上,它的ip为10.42.3.23
 
b、先在pod所在的宿主机上然后在另外几个节点去ping这个ip,看看能否ping通,在canal网络模式下,请检查防火墙端口8472/UDP是否开放。查看每天机器上是否有尝试使用每台机器的flannel.1网卡,用的话,用flannel.1上的ip互相ping,看看是否能通,因为flannel网络和canal网络是通过flannel.1网卡互相建立vxlan遂道的。建议操作在关闭防火墙的情况下测试。

部署使用calico网络部署环境失败问题

部署rancher2.0时网络类型为calico时,如果cloud provider默认不填会选用公有云的,导致部署失败,所以这里我们需要手动填写为none。(后期会优化此项)

 
4、部署时主机not fount问题
出现这个问题是因为宿主机的主机名不符合kubernetes的标准主机名要求也不符合标准的linux主机名,主机名内不能有下划线。


 
5、获取组件健康状态forbidden问题


大部分原因是因为部署多次,证书残留的导致的,解决办法,按照环境信息残留里面的方法把环境清空下,在重新添加。
 
6、web页面kubectl闪退问题
这个主要根操作系统版本和浏览器的版本有关系,请使用上推荐使用操作系统中的操作系统,浏览器使用Chrome

7、非worker节点仍然被调度pod问题
目前rancher2.0非worker节点,仍然会被调度pod过去,您可以选择手动将它们从kube-scheduler踢除,命令如下:
打开web页面kubectl


 

然后执行
kubectl taint node rancher-kf-control01 node-role.kubernetes.io/rancher-kf-control01="":NoSchedule
kubectl taint node rancher-kf-control02 node-role.kubernetes.io/rancher-kf-control02="":NoSchedule
kubectl taint node rancher-kf-control03 node-role.kubernetes.io/rancher-kf-control03="":NoSchedule

8、it is a not share mount问题
 
部署时遇到share mount问题时,报错提示如下:
FATA[0180] [workerPlane] Failed to bring up Worker Plane: Failed to start [kubelet] container on host [192.168.10.51]: Error response from daemon: linux mounts: Path /var/lib/kubelet is mounted on / but it is not a shared mount.

这个问题原因主要是kubelet容器化部署,需要手动设置docker的MuntFLAGS为空
https://github.com/kubernetes/kubernetes/issues/4869#issuecomment-195696990
解决方法:
执行
mount --make-shared /
或配置docker.server
MountFlags=shared
重启docker.service
 
9、NetworkRedy=false问题


这个问题通常是,在部署时网络组件在初始化,在配置,等待段时间就好了。
 
10、集群unavailable


通常此问题,是因为rancher-server根kubernetes中的kube-apiserver 6443端口连接有问题,建议检查防火墙和查看kube-api-server的日志。
 
总结
1、部署时能严格按照官方给出的操作系统版本和docker版本部署,可以避免掉很多问题。
2、多次部署,升级,环境一定要按照环境信息残留章节的命令,将环境清理干净。
3、如果遇到问题,建议docker logs 查看rancher-agent,rancher-server的日志。 收起阅读 »

Rancher2 主机名命名规则

"2018-03-21T02:35:23Z","message": "Failed to deploy addon execute job: Job.batch \"rke-network-plugin-deploy-job\" is invalid: spe...
继续阅读 »
"2018-03-21T02:35:23Z","message": "Failed to deploy addon execute job: Job.batch \"rke-network-plugin-deploy-job\" is invalid: spec.template.spec.nodeName: Invalid value: \"chen-PC\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')","reason": "Error","status": 
"False","type": "Provisioned"}, 
 
因为K8S 主机名只支持- 和. (中横线和点),所以Rancher2添加的节点主机名 不能有除 -和 . 之外的特殊字符。 收起阅读 »

Rancher2.0 密码重置

登录rancher2.0 server主机,执行以下命令:   docker exec -ti  reset-password    返回以下信息: root@192-168-1-94:~# docker exec -ti agitated_liskov re...
继续阅读 »
登录rancher2.0 server主机,执行以下命令:
 
docker exec -ti  reset-password 
 
返回以下信息:
root@192-168-1-94:~# docker exec -ti agitated_liskov reset-password
New password for default admin user (user-vf4m5):
shhESE1e4tzMaDfc74nG
root@192-168-1-94:~# 收起阅读 »

Rancher 2.0 节点初始化

docker rm -f $(docker ps -qa) docker volume rm $(docker volume ls -q) for mount in $(mount | grep tmpfs | grep '/var/lib/kubel...
继续阅读 »
docker rm -f $(docker ps -qa)
docker volume rm $(docker volume ls -q)
for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/opt/cni \
/opt/rke \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/etcd \
/var/lib/cni \
/var/lib/kubelet \
/var/lib/rancher \
/var/log/containers \
/var/log/pods \
/var/run/calico


完整文档: https://www.xtplayer.cn/rancher/node-init/

收起阅读 »

centos通过docker启动cAdvisor报错:/sys/fs/cgroup/cpuacct,cpu: no such file or directory

docker 启动 cAdvisor,操作系统CentOS7.4。 docker run \   --volume=/:/rootfs:ro \   --volume=/var/run:/var/run:rw \   --volume=/sys:/sys:r...
继续阅读 »
docker 启动 cAdvisor,操作系统CentOS7.4。

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 \
  --net=host \
   google/cadvisor:v0.28.3

发现容器没有正常启动,查看日志,有如下报错内容:
Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: no such file or directory
解决方法,执行:
mount -o remount,rw '/sys/fs/cgroup'
ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu 收起阅读 »

rancher/server:1.6.16

[size=14]Release v1.6.16Versions[/size] [list] [*] rancher/server:v1.6.16[/*] [*] rancher/agent:v1.2.10[/*] [*] rancher/win-agent:...
继续阅读 »
Release v1.6.16Versions
Supported Docker Versions
  • Docker 1.12.3-1.12.6
  • Docker 1.13.1
  • Docker 17.03-ce/ee
  • Docker 17.06-ce/ee
  • Docker 17.09-ce/ee
  • Docker 17.12-ce/ee

Note: Kubernetes 1.9/1.8 supports Docker 1.12.6, 1.13.1 and 17.03.2. Kubernetes 1.7 supports up to Docker 1.12.6

Kubernetes VersionsList of images required to launch Kubernetes template:
  • rancher/k8s:v1.9.4-rancher1-1
  • rancher/etcd:v2.3.7-13
  • rancher/kubectld:v0.8.6
  • rancher/etc-host-updater:v0.0.3
  • rancher/kubernetes-agent:v0.6.7
  • rancher/kubernetes-auth:v0.0.8
  • rancher/lb-service-rancher:v0.7.17
  • busybox
For the list of versions for the Kubernetes add-ons embedded in the Rancher Kubernetes images, please refer to the kubernetes-package repo for the specific images and versions.Important - Kubernetes SecurityWIth this release, we are addressing several kubernetes vulnerabilities:[list=1]
  • The vulnerability CVE-2017-1002101 allows containers to use a subpath volume mount with any volume types to access files outside of the volume. This means that if you are blocking container access to hostpath volumes with PodSecurityPolicy, an attacker with the ability to update or create pods can mount any hostpath using any other volume type.
  • The vulnerability CVE-2017-1002102 allows containers using certain volume types - including secrets, config maps, projected volumes, or downward API volumes - to delete files outside of the volume. This means that if a container using one of these volume types is compromised, or if you allow untrusted users to create pods, an attacker could use that container to delete arbitrary files on the host.
  • Rancher is securing the kubelet port 10250 by no longer allowing anonymous access and requiring a valid cert. This is the port that is used by the kubernetes api-manager-to-kubelet communication and keeping this exposed will allow anonymous access to your compute node. Upgrading to the latest kubernetes version will resolve this issue. You can also visit the Rancher Docs site for specific instructions on how to secure your kubernetes cluster without upgrading your environment if you have not already done so previously.
  • Rancher v1.6.16 ships with k8s v.1.9.4 that addresses these vulnerabilities. If you are on Rancher v1.6.14 (current stable version) or v1.6.13, you will also be prompted with an update to your existing k8s v1.8.5 to v1.8.9. We highly recommend you to upgrade as soon as possible.Important - Upgrade
    • Users on a version prior to Rancher v1.5.0: We will automatically upgrade the 
      network-services
       infrastructure stack as without this upgrade, your release will not work.
    • Users on a version prior to Rancher v1.6.0: If you make any changes to the default Rancher library setting for your catalogs and then roll back, you will need to reset the branch used for the default Rancher library under Admin -> Settings -> Catalog. The current default branch is 
      v1.6-release
      , but the old default branch is 
      master
    • Rollback Versions: We support rolling back to Rancher v1.6.14 from Rancher v1.6.16.
      • Steps to Rollback:
        • In the upgraded version the Admin -> Advanced Settings -> API values, update the 
          upgrade.manager
           value to 
          all
        • "Upgrade" Rancher server but pointing to the older version of Rancher (v1.6.14). This should include backing up your database and launching Rancher to point to your current database.
        • Once Rancher starts up again, all infrastructure stacks will automatically rollback to the applicable version in v1.6.14.
        • After your setup is back to its original state, update the 
          upgrade.manager
           value back to the original value that you had (either 
          mandatory
           or 
          none



         

        Note on Rollback: If you are rolling back and have authentication enabled using Active Directory, any new users/groups added to site access on the Access Control page after the upgrade will not be retained upon rolling back. Any users added before the upgrade will continue to remain. [#9850]
         


        收起阅读 »

    rancheros 添加国内加速器

    登陆 rancheros    sudo su //进入root用户     vi /var/lib/rancher/config/cloud-config.yml 在 rancher 下面添加   下面的地址改为你的加速器地址p.p1 {margin: 0....
    继续阅读 »

    登陆 rancheros 
       sudo su //进入root用户 
        vi /var/lib/rancher/config/cloud-config.yml
     
    在 rancher 下面添加   下面的地址改为你的加速器地址p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #29f914; background-color: #000000}
    span.s1 {font-variant-ligatures: no-common-ligatures}
    rancher:
     
    p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #29f914; background-color: #000000}
    span.s1 {font-variant-ligatures: no-common-ligatures}
    docker:                                                                                            
        registry_mirror: http://123123.m.daocloud.io
    p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #29f914; background-color: #000000}
    span.s1 {font-variant-ligatures: no-common-ligatures}
      system_docker:                                                                                                                                     
        registry_mirror: http://123123.m.daocloud.io

    收起阅读 »

    Rancher第二季在线培训视频回放汇总(2017年11月-12月)

    [size=14][b]Rancher第二季在线培训视频回放汇总(2017年11月-12月)[/b] [b]第5期-2017年12月26日-如何搭建基于容器的CI/CD[/b][/size] [size=14]报名链接:[url]http://www.it...
    继续阅读 »

    Rancher第二季在线培训视频回放汇总(2017年11月-12月)

    第5期-2017年12月26日-如何搭建基于容器的CI/CD


    报名链接:http://www.itdks.com/liveevent/detail/9455  
    培训时间:2017年12月26日(周二) 20:30-22:00
    主题简介:
    CI/CD(持续集成与持续交付)敏捷、稳定、可靠的特性,越来越被企业所青睐与需要。
    然而真正实现CI/CD却并非易事,pipeline搭建工作复杂,平滑升级难以保障,服务宕机难以避免,
    那该如何真正把CI/CD在企业里落地并最终带来生产运维效率的提升?
    此次在线直播将演示分享如何利用开源的Rancher Pipeline,搭建基于容器的CI/CD。

    主要内容:
    一、如何部署Rancher Pipeline
    二、举例讲解:
      - 如何使用Rancher Pipeline搭建基于容器的CI/CD
      - 如何配置源代码管理认证
      - 如何创建和运行Pipeline
      - 如何完成从源码到镜像的构建和部署


    第4期-2017年12月13日-如何安装使用RKE

    报名链接:http://www.itdks.com/liveevent/detail/8343  
    培训介绍:http://mp.weixin.qq.com/s/TauaF8X9oCr0PNkrH-e6lA  
    培训时间:2017年12月13日(周三)晚20:30-22:30
    内容简介:
    Rancher Kubernetes Engine(RKE)是Rancher Labs推出的新的开源项目,
    一个极致简单易用、闪电般快速、支持一切基础架构的Kubernetes安装程序。
    此次培训中,我们将演示如何安装使用RKE。 

    主要内容:
      - 如何安装RKE 
      - 安装RKE的准备工作 
      - RKE的入门使用(集群配置文件、运行RKE、连接到集群) 
      - 如何使用插件 
      - 如何作高可用 
      - 如何添加或删除节点 
      - 如何删除集群



    第3期-2017年11月29日-离线加速部署Kubernetes!

    报名链接:http://www.itdks.com/liveevent/detail/7830  (注册以后观看回放)
    培训介绍:http://mp.weixin.qq.com/s/Jfi7F8XcCof1PWo1qcnzYQ
    培训时间:11月29日(周三)晚20:30-22:00

    主要内容:
        离线部署组件介绍及准备工作
        如何离线部署Git、Harbor
        如何离线部署Rancher
        如何在Rancher上离线部署Kubernetes


    第2期-2017年11月15日-Rancher的容器存储与网络

    视频回放:http://www.itdks.com/liveevent/detail/6971   (注册以后观看回放)
    内容介绍:http://www.dwz.cn/6Oy8bs 
    培训时间:11月15日20:30-22:00
    培训时长:1小时26分

    主要内容:
      1.存储:
        1.1如何完成环境准备(NFS Server 和 Ceph Server)
        1.2如何使用 NFS plugin
        1.3如何使用 Ceph plugin
      2.网络:
        2.1如何完成环境准备(防火墙策略、IP地址段、接口名称)
        2.2如何使用 Vxlan plugin
        2.3如何使用 Flat Network plugin


    第1期-2017年11月1日-Rancher和Kubernetes从入门到进阶

    视频网址: http://v.youku.com/v_show/id_XMzEyODg0MTAxMg  
    培训时间:11月1日20:30-22:30
    培训时长:2小时13分

    主要内容:
        如何创建Rancher Server
        Rancher Server UI访问
        环境介绍及创建
        如何添加主机 / 资源
        如何添加服务栈及负载均衡
        Catalog介绍及使用
        API / CLI访问
        Kubernetes on Rancher
    收起阅读 »

    rancher 2.0 支持的docker 版本

    Unsupported Docker version found [17.12.1-ce],  supported versions are [1.12.6 1.13.1 17.03.2]  
    Unsupported Docker version found [17.12.1-ce], 
    supported versions are [1.12.6 1.13.1 17.03.2]
     

    Kibana Discover: Request Timeout after 30000ms

    kibana 出现以下错误信息: Discover: Request Timeout after 30000ms Less Info OK Error: Request Timeout after 30000ms at [url=http://192.xxxx...
    继续阅读 »
    kibana 出现以下错误信息:
    Discover: Request Timeout after 30000ms
    Less Info
    OK
    Error: Request Timeout after 30000ms
    at http://192.xxxx:5601/bundles/kibana.bundle.js?v=15382:13:4431=0.7579em6
    at http://192.xxx:5601/bundles/kibana.bundle.js?v=15382:13:4852=0.7579em1
     
    解决办法:
    在kibana中,进入kibana web\管理\高级设置,把discover:sampleSize 的值调小。 收起阅读 »

    kubelet is mounted on but it is not a shared mount.

    [size=14]1, 在centos 部署rancher2.0时,如果遇到以下问题:[/size] [size=14] [/size] [size=14][workerPlane] Failed to bring up Worker Plane: Faile...
    继续阅读 »
    1, 在centos 部署rancher2.0时,如果遇到以下问题:
     
    [workerPlane] Failed to bring up Worker Plane: Failed to start [kubelet] container on host [192.168.1.154]: Error response from daemon: linux mounts: Path /var/lib/kubelet is mounted on / but it is not a shared mount.
     
    可以通过以下方法解决:
     
    vi 编辑 /etc/systemd/system/multi-user.target.wants/docker.service
     
    修改MountFlags=slave  为 MountFlags=  空值
     
    2, 在Ubuntu部署出现/var/lib/kubelet is mounted on / but it is not a shared mount. 试着修改服务配置文件/lib/systemd/system/docker.service   中MountFlags=slave修改为MountFlags=shared 收起阅读 »

    Rancher server1.6 自定义日志等级 debug

    [size=14]默认情况下,server日志记录等级为INFO,可以按照以下方法修改:[/size] [size=14] [/size] [size=14]通过打开[/size][url=http://rancher_url:8080/v2-beta/set...
    继续阅读 »
    默认情况下,server日志记录等级为INFO,可以按照以下方法修改:
     
    通过打开http://rancher_url:8080/v2-beta/settings/auth.service.log.level ,
     
    {

    CICD构建时提示找不到Dockerfile文件

    [size=16][attach]57[/attach] 如图,在构建的时候,可能出现找不到Dockerfile的情况,按以下两种思路去排查:[/size] [list=1] [[i]][size=16]构建路径是否正确[/size][/[/i]] [/lis...
    继续阅读 »
    cicd.png

    如图,在构建的时候,可能出现找不到Dockerfile的情况,按以下两种思路去排查:

      []构建路径是否正确[/]

         构建路径为DOckerfile所在的路径,如果你的Dockerfile在代码库的根目录,则配置如图
    cicd1.png

         如果Dockerfile在子目录下,如图
    cicd2.png

      []检查Dockerfile 文件名尾部是否有空格[/]

    收起阅读 »

    RancherCLI使用入门

    [b]运行截图:[/b] 01-API-秘钥-添加账号API Key.jpg 02-起一个方便记忆的名称-这个名称与登录无关.jpg 03-API Key已创建好-Access Key就是用户名-Secret Key就相当于密码-要保存好.jpg 04-记住四...
    继续阅读 »
    运行截图:
    01-API-秘钥-添加账号API Key.jpg
    02-起一个方便记忆的名称-这个名称与登录无关.jpg
    03-API Key已创建好-Access Key就是用户名-Secret Key就相当于密码-要保存好.jpg
    04-记住四个参数-1端点URL地址-2AccessKey用户名-3SecretKey密码-4环境名.jpg
    05-下载所需平台的CLI程序.jpg
    06-windows平台下是一个压缩包,解压缩.jpg
    07-运行rancher config命令,输入4个参数,配置RancherCLI连接.jpg
    08-执行rancher CLI命令1.jpg
    09-执行rancher CLI命令2.jpg
    10-Rancher CLI 命令.jpg

    01-API-秘钥-添加账号API Key.jpg
    01-API-秘钥-添加账号API_Key.jpg


    02-起一个方便记忆的名称-这个名称与登录无关.jpg
    02-起一个方便记忆的名称-这个名称与登录无关.jpg


    03-API Key已创建好-Access Key就是用户名-Secret Key就相当于密码-要保存好.jpg
    03-API_Key已创建好-Access_Key就是用户名-Secret_Key就相当于密码-要保存好.jpg


    04-记住四个参数-1端点URL地址-2AccessKey用户名-3SecretKey密码-4环境名.jpg
    04-记住四个参数-1端点URL地址-2AccessKey用户名-3SecretKey密码-4环境名.jpg


    05-下载所需平台的CLI程序.jpg
    05-下载所需平台的CLI程序.jpg


    06-windows平台下是一个压缩包,解压缩.jpg
    06-windows平台下是一个压缩包,解压缩.jpg


    07-运行rancher config命令,输入4个参数,配置RancherCLI连接.jpg
    07-运行rancher_config命令,输入4个参数,配置RancherCLI连接.jpg


    08-执行rancher CLI命令1.jpg
    08-执行rancher_CLI命令1.jpg


    09-执行rancher CLI命令2.jpg
    09-执行rancher_CLI命令2.jpg


    10-Rancher CLI 命令.jpg
    10-Rancher_CLI_命令.jpg


    参考链接:
    RancherCLI命令行界面
    http://rancher.com/docs/rancher/v1.6/zh/cli/ 

    RANCHER CLI 命令
    http://rancher.com/docs/rancher/v1.6/zh/cli/commands/ 
      收起阅读 »