zoukankan      html  css  js  c++  java
  • Rancher2.X+HA部署

    Rancher2的单节点部署很简单

    1 sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
    View Code

    Rancher2的多节点HA部署在2.0.8之前需要直接rke部署,升级也比较麻烦,2.0.8以后的版本使用helm部署,相对于之前的版本在部署和升级上面好了很多,记录如下:

    2.0.8之前版本的部署需要rancher-cluster.yml文件

      1 nodes:
      2   - address: 192.168.40.104 # hostname or IP to access nodes
      3     user: root # root user (usually 'root')
      4     role: [controlplane,etcd,worker] # K8s roles for node
      5     ssh_key_path: ~/.ssh/id_rsa # path to PEM file
      6   - address: 192.168.40.105
      7     user: root
      8     role: [controlplane,etcd,worker]
      9     ssh_key_path: ~/.ssh/id_rsa
     10   - address: 192.168.40.106
     11     user: root
     12     role: [controlplane,etcd,worker]
     13     ssh_key_path: ~/.ssh/id_rsa
     14 
     15 services:
     16   etcd:
     17     snapshot: true
     18     creation: 6h
     19     retention: 24h
     20 
     21 addons: |-
     22   ---
     23   kind: Namespace
     24   apiVersion: v1
     25   metadata:
     26     name: cattle-system
     27   ---
     28   kind: ServiceAccount
     29   apiVersion: v1
     30   metadata:
     31     name: cattle-admin
     32     namespace: cattle-system
     33   ---
     34   kind: ClusterRoleBinding
     35   apiVersion: rbac.authorization.k8s.io/v1
     36   metadata:
     37     name: cattle-crb
     38     namespace: cattle-system
     39   subjects:
     40   - kind: ServiceAccount
     41     name: cattle-admin
     42     namespace: cattle-system
     43   roleRef:
     44     kind: ClusterRole
     45     name: cluster-admin
     46     apiGroup: rbac.authorization.k8s.io
     47   ---
     48   apiVersion: v1
     49   kind: Secret
     50   metadata:
     51     name: cattle-keys-ingress
     52     namespace: cattle-system
     53   type: Opaque
     54   data:
     55     tls.crt: #添加自己的证书
     56     tls.key: #添加自己的证书
     57   ---
     58   apiVersion: v1
     59   kind: Secret
     60   metadata:
     61     name: cattle-keys-server
     62     namespace: cattle-system
     63   type: Opaque
     64   data:
     65     cacerts.pem: #添加自己的证书
     66   ---  
     67   apiVersion: v1
     68   kind: Service
     69   metadata:
     70     namespace: cattle-system
     71     name: cattle-service
     72     labels:
     73       app: cattle
     74   spec:
     75     ports:
     76     - port: 80
     77       targetPort: 80
     78       protocol: TCP
     79       name: http
     80     - port: 443
     81       targetPort: 443
     82       protocol: TCP
     83       name: https
     84     selector:
     85       app: cattle
     86   ---
     87   apiVersion: extensions/v1beta1
     88   kind: Ingress
     89   metadata:
     90     namespace: cattle-system
     91     name: cattle-ingress-http
     92     annotations:
     93       nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
     94       nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"   # Max time in seconds for ws to remain shell window open
     95       nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"   # Max time in seconds for ws to remain shell window open
     96   spec:
     97     rules:
     98     - host:   # FQDN to access cattle server
     99       http:
    100         paths:
    101         - backend:
    102             serviceName: cattle-service
    103             servicePort: 80
    104     tls:
    105     - secretName: cattle-keys-ingress
    106       hosts:
    107       -       # FQDN to access cattle server
    108   ---
    109   kind: Deployment
    110   apiVersion: extensions/v1beta1
    111   metadata:
    112     namespace: cattle-system
    113     name: cattle
    114   spec:
    115     replicas: 1
    116     template:
    117       metadata:
    118         labels:
    119           app: cattle
    120       spec:
    121         serviceAccountName: cattle-admin
    122         containers:
    123         # Rancher install via RKE addons is only supported up to v2.0.8
    124         - image: rancher/rancher:stable
    125           imagePullPolicy: Always
    126           name: cattle-server
    127   #       env:
    128   #       - name: HTTP_PROXY
    129   #         value: "http://your_proxy_address:port"
    130   #       - name: HTTPS_PROXY
    131   #         value: "http://your_proxy_address:port"
    132   #       - name: NO_PROXY
    133   #         value: "localhost,127.0.0.1,0.0.0.0,10.43.0.0/16,your_network_ranges_that_dont_need_proxy_to_access"
    134           livenessProbe:
    135             httpGet:
    136               path: /ping
    137               port: 80
    138             initialDelaySeconds: 60
    139             periodSeconds: 60
    140           readinessProbe:
    141             httpGet:
    142               path: /ping
    143               port: 80
    144             initialDelaySeconds: 20
    145             periodSeconds: 10
    146           ports:
    147           - containerPort: 80
    148             protocol: TCP
    149           - containerPort: 443
    150             protocol: TCP
    151           volumeMounts:
    152           - mountPath: /etc/rancher/ssl
    153             name: cattle-keys-volume
    154             readOnly: true
    155         volumes:
    156         - name: cattle-keys-volume
    157           secret:
    158             defaultMode: 420
    159             secretName: cattle-keys-server
    View Code

    2.0.8之后的rancher-cluster.yml文件要简洁很多

     1 nodes:
     2   - address: 192.168.40.104 # hostname or IP to access nodes
     3     internal_address: 192.168.40.104
     4     user: root # root user (usually 'root')
     5     role: [controlplane,etcd,worker] # K8s roles for node
     6     ssh_key_path: ~/.ssh/id_rsa # path to PEM file
     7   - address: 192.168.40.105
     8     internal_address: 192.168.40.105
     9     user: root
    10     role: [controlplane,etcd,worker]
    11     ssh_key_path: ~/.ssh/id_rsa
    12   - address: 192.168.40.106
    13     internal_address: 192.168.40.106
    14     user: root
    15     role: [controlplane,etcd,worker]
    16     ssh_key_path: ~/.ssh/id_rsa
    17 
    18 services:
    19   etcd:
    20     snapshot: true
    21     creation: 6h
    22     retention: 24h
    View Code

    这里我设置三个节点做HA,关于架构借用rancher官方的图

    LB使用nginx,单独部署,不建议使用容器,直接部署实体就行,nginx.conf文件中要使用stream模块负责LB

    通过rke部署三个节点的k8s集群

    rke up --config ./rancher-cluster.yml

    部署完成后,在当前目录会生成kube_config_rancher-cluster.yml文件,这个文件要保留好,后期升级是不要使用的

    export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml

     

    创建tiller 的pod

    kubectl -n kube-system create serviceaccount tiller
    kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
    helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.11.0

    查看所有的pod

     

    查看helm和tiller是否成功

     

    部署rancher,需要把rancher加入helm的repository中

    helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
    helm repo update

    因为有自己的证书,所以在安装时候不用cert-manager工具

    helm install rancher-stable/rancher --name rancher --namespace cattle-system --set hostname=(nginx中的域名) --set ingress.tls.source=secret

     

    添加证书

    kubectl -n cattle-system create secret tls tls-rancher-ingress --cert=tls.crt --key=tls.key
    kubectl -n cattle-system create secret generic tls-ca --from-file=cacerts.pem

    rancher2HA模式部署完成

     

    进入rancher2后,会发现一个local的k8s集群

     

    到此,rancher2.x(2.0.8以上版本)HA模式部署完成

  • 相关阅读:
    UTF-8和GBK的区别
    JSP页面中的pageEncoding和contentType两种属性
    tomcat中reloadable作用
    为什么Servlet修改之后,Tomcat都得重启,servlet才会生效!
    windows下mysql表名不自动转换小写配置
    导入mysql文件提示“ASCII '' appeared in the statement”
    request:getParameter和getAttribute区别
    Eclipse常用快捷键
    For input string: "null"
    国内外知名IT科技博客(强烈推荐)
  • 原文地址:https://www.cnblogs.com/drnmmond/p/9887884.html
Copyright © 2011-2022 走看看