Fearchen's Blog

把我的过程记录下来,以免以后忘了


  • 首页

  • 归档

  • 关于

OpenShift-混合云管理

发表于 2018-04-25 | 分类于 OpenShift

简介

在现代企业中,企业需要考虑如何有效的集成和管理不同厂商的云产品。更多的用户希望能有一个统一的入口来管理和运维这些云平台。对于OpenShift容器云而言,常见的混合云的需求有自动扩容缩容以及多集群的应用部署等。

混合云管理平台的价值:

  • 度量采集及分析

  • 策略控制

  • 自动化集成

MangeIQ是一个开源的混合云管理平台项目。其商业版本为RedHat的CloudForms。MangeIQ原生提供了对OpenStack、VMWare、Amazon等公有云的支持,同时也对OpenShift提供了集成支持。

用户可哟通过MangeIQ对多个不同的云平台进行统一管理。

部署

MaanageIQ提供了非常丰富的部署方式,本文将通过VMware vSphere平台进行部署。

项目主页:http://manageiq.org/

安装包下载页:http://manageiq.org/download/

./media/image1.png
下载VMWare VSphere的OVA文件,并导入到vmware环境
默认用户密码root:smartvm
./media/image2.png
使用appliance_console命令修改系统信息
先修改IP地址
./media/image3.png
配置跟OpenShift集群同一网段的IP地址
./media/image4.png
测试网络连通性
测试链接Master地址
./media/image5.png
Web访问,默认密码admin:smartvm
https://10.10.31.169/
./media/image6.png
./media/image7.png

使用

添加OpenShift集群
计算->容器->供应商
./media/image8.png
配置->添加新容器供应商
获取token
oc sa get-token -n management-infra management-admin
./media/image9.png
./media/image10.png
./media/image11.png
添加完成
./media/image12.png
./media/image13.png

kuadm搭建kubernetes 1.5

发表于 2017-02-16 | 分类于 kubernetes
  1. 环境:
    a. 192.168.254.160 k8s01.160
    b. 192.168.254.161 k8s02.161
    c. 192.168.254.162 k8s03.162
    d. 配置好hosts和hostname
    e. 保证时间一致
  2. 以下在所有机器上安装
    a. 配置阿里k8s源
    cat < /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    EOF
    b. setenforce 0 //为了让docker可以访问文件系统
    c. sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/‘ /etc/selinux/config
    d. systemctl stop firewalld && systemctl disable firewalld
    e. yum install -y docker kubelet kubeadm kubectl kubernetes-cni
    f. systemctl enable docker && systemctl start docker
    g. 提前将google相关的一些image下载到本地会加快构建集群的速度,,这里用自己提前自动构建的镜像
    images=(kube-proxy-amd64:v1.5.2 \
    kube-discovery-amd64:1.0 \
    kubedns-amd64:1.9 \
    kube-scheduler-amd64:v1.5.2 \
    kube-controller-manager-amd64:v1.5.2 \
    kube-apiserver-amd64:v1.5.2 \
    etcd-amd64:3.0.14-kubeadm \
    kube-dnsmasq-amd64:1.4 \
    exechealthz-amd64:v1.2.0 \
    pause-amd64:3.0 \
    kubernetes-dashboard-amd64:v1.5.1)
    for imageName in ${images[@]} ; do
    docker pull fearchan/$imageName
    docker tag fearchan/$imageName gcr.io/google_containers/$imageName
    docker rmi fearchan/$imageName
    done
  3. 初始化Maseter节点
    a. systemctl enable kubelet && systemctl start kubelet
    b. kubeadm init

    c. 初始化成功,记住生成的token值以便后续加节点

    i. 记住:kubeadm join --token=50d2be.a776c64bb95af773 192.168.254.160
    
  4. 添加node
    a. systemctl enable kubelet && systemctl start kubelet
    b. kubeadm join –token=50d2be.a776c64bb95af773 192.168.254.160

    c. 添加成功

  5. 在Master测试
    a. kubectl get nodes

  6. 部署 weave 网络,不部署weave,dns无法启动
    a. 浏览器打开https://git.io/weave-kube,下载好weave-daemonset.yaml文件传到服务器上
    b. kubectl create -f weave-daemonset.yaml

  7. 部署 dashboard
    a. 下载https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml文件,并做修改,是为了使用本地dashboard镜像
    b. 编辑 yaml 改一下 imagePullPolicy,把 Always 改成 IfNotPresent(本地没有再去拉取) 或者 Never(从不去拉取) 即可
    c. 保证本地有gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1
    d. 执行:

    i. kubectl create -f kubernetes-dashboard.yaml
    

    e. 等待创建完成:

    i. kubectl get pod --all-namespaces | grep dashboard
    

    f. 查看暴露出来的端口即可访问

    i. kubectl describe svc kubernetes-dashboard --namespace=kube-system
    

    g. 访问地址:

    i. http://192.168.254.160:31618/
    

hub.docker上搭建仓库并上传镜像

发表于 2017-02-09 | 分类于 Docker
  1. 注册docker账号

  2. 登陆hub.docker.com

  3. 第一种方式:推送本地镜像到docker hub

    a. 现在docker hub上创建好一个repositories,名为gcr.io

    b. 在安装好docker的机器上登陆docker login

    c. 查看目前机器已有的镜像

    d. 如果要推送官放的nginx镜像,就得重新打tag

    e. docker tag docker.io/centos fearchan/gcr.io

    f. 让后用新镜像名push,才能到自己的仓库里去

    g. 国内网络问题,不建议用此方法

  4. 第二种方式:自动构建,使用github上的Dockerfile创建镜像

    a. 首先在dock hub上单机Add Repository -> Automated Build,选择Public and Private (recommended),这是为了账号授权

    b. 然后选择一个用来存放Dockerfile的库,这使用gcr.io库

    c. 下面需要指定Dockerfile在仓库里的位置

    d. 也可以添加多个版本的Dockfile

    e. 然后点击Create创建就可以了,官方说5分钟会对修改的Dockfile自动构建一次,可可以手动执行“Trigger”执行

    f. 然后可以在Build Details看到构建状态

    g. 构建成功就可以在任意机器上pull该镜像了

    h. docker search fearchan

    i. docker pull docker.io/fearchan/kube-controller-manager-amd64:v1.5.1

Centos7.2上使用Docker

发表于 2017-01-25 | 分类于 Docker
  1. 安装docker
    a. yum install docker
    b. systemctl start docker
    c. docker version
    d. ps aux | grep docker
  2. 镜像管理
    a. docker search centos
    b. docker pull centos
    c. docker images
    d. dokcer tag docker.io/ubuntu tagubuntu
    e. docker run -i -t ubuntu /bin/bash(-m 加一些改动信息,-a定义作者信息)
    i. ls
    ii. exit
    
    f. docker ps
    i. docker ps -a
    
    g. docker rmi ubuntu:latest
  3. 使用容器生成新的镜像
    a. docker ps
    b. docker exec -it 3fa8cde95368 /bin/bash
    i. touch testfile
    
    c. docker commit -m “ubuntu_net” -a “ubuntu_neww” 3fa8cde95368 ubuntu_new
    d. docker images
    e. docker inspect ubuntu_new
  4. 基于本地模板创建镜像
    a. 获取模板直接在网上下载一个模板文件
    i. wget https://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
    
    b. 导入镜像
    i. cat centos-7-x86_64-minimal.tar.gz |docker import - centos-7-x86_64
    
    c. docker images
    d. 导出镜像到文件
    i. docker save -o ubuntu.tar f49eec89601e
    
    e. 恢复镜像
    i. docker load < ubuntu.tar
    ii. docker tag f49eec89601e ubuntu
    
  5. docker容器管理
    a. docker ps
    i. docker ps -a
    
    b. docker create -it ubuntu (创建一个容器但该容器并没有启动)
    i. docker create -it centos-6-x86_64 /bin/bash
    
    c. docker start 3fa8cde95368
    d. docker run -itd centos /bin/bash
    e. docker exec -it 262b30408084 /bin/bash
    f. docker attach 262b30408084
    g. docker run -itd –name guozhen ubuntu:latest
    h. docker rm 24f7d4341f97
    i. 导出容器
    i. docker export ce236652835c > export_ubuntu.tar
    
    j. 把导出的容器导入成镜像
    i. cat export_ubuntu.tar | docker import - ubuntu
    
  6. docker挂载
    a. 挂载目录
    i. docker run -itd -v /dockerdata/:/data centos-7-x86_64 bash
    
    b. 共享数据
    i. docker run -itd --volumes-from modest_pare centos-7-x86_64 bash
    

Centos7.2部署kubernetes

发表于 2017-01-25 | 更新于 2017-02-21 | 分类于 Docker
  1. 环境:
    a. master:192.168.254.141
    b. node01:192.168.254.142
    c. node02:192.168.254.143
    d. 配置hosts
  2. master节点安装:
    a. systemctl stop firewalld && systemctl disable firewalld
    b. yum install kubernetes-master etcd -y
  3. node节点安装:
    a. systemctl stop firewalld && systemctl disable firewalld
    b. yum install kubernetes-node flannel docker -y
    c. systemctl enable docker && systemctl start docker
  4. 配置etc节点:
    a. egrep -v “^#” /etc/etcd/etcd.conf
    ETCD_NAME=default
    ETCD_DATA_DIR=”/var/lib/etcd/default.etcd”
    ETCD_LISTEN_CLIENT_URLS=”http://0.0.0.0:2379"
    ETCD_ADVERTISE_CLIENT_URLS=”http://192.168.254.141:2379"
    b. 启动etcd
    i. systemctl start etcd && systemctl enable etcd
    
  5. 配置master节点:
    a. egrep -v “^#” /etc/kubernetes/apiserver | grep -v “^$”
    KUBE_API_ADDRESS=”–insecure-bind-address=0.0.0.0”
    KUBE_ETCD_SERVERS=”–etcd-servers=http://192.168.254.141:2379"
    KUBE_SERVICE_ADDRESSES=”–service-cluster-ip-range=10.254.0.0/16”
    KUBE_ADMISSION_CONTROL=”–admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota”
    KUBE_API_ARGS=””
    b. egrep -v “^#” /etc/kubernetes/controller-manager |grep -v “^$”
    KUBE_CONTROLLER_MANAGER_ARGS=”–node-monitor-grace-period=10s –pod-eviction-timeout=10s”
    c. egrep -v “^#” /etc/kubernetes/config | egrep -v “^$”
    KUBE_LOGTOSTDERR=”–logtostderr=true”
    KUBE_LOG_LEVEL=”–v=0”
    KUBE_ALLOW_PRIV=”–allow-privileged=false”
    KUBE_MASTER=”–master=http://192.168.254.141:8080"
    d. 启动服务:
    i. systemctl enable kube-apiserver kube-scheduler kube-controller-manager
    ii. systemctl start kube-apiserver kube-scheduler kube-controller-manager
    
  6. 配置node节点
    a. egrep -v “^#” /etc/kubernetes/config | grep -v “^$”
    KUBE_LOGTOSTDERR=”–logtostderr=true”
    KUBE_LOG_LEVEL=”–v=0”
    KUBE_ALLOW_PRIV=”–allow-privileged=false”
    KUBE_MASTER=”–master=http://192.168.254.141:8080"
    b. egrep -v “^#” /etc/kubernetes/kubelet | grep -v “^$”
    KUBELET_ADDRESS=”–address=127.0.0.1”
    KUBELET_HOSTNAME=”–hostname-override=docker02”
    KUBELET_API_SERVER=”–api-servers=http://192.168.254.141:8080"
    KUBELET_POD_INFRA_CONTAINER=”–pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest”
    KUBELET_ARGS=”–pod-infra-container-image=kubernetes/pause”
    c. 启动服务:
    i. systemctl enable kubelet kube-proxy
    ii. systemctl start kubelet kube-proxy
    
  7. 配置node节点flannel
    a. 初始化flannel的etcd配置(etc节点操作):
    i. etcdctl -C 127.0.0.1:2379 set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
    
    b. node节点上操作:
    i. egrep -v "^#" /etc/sysconfig/flanneld | grep -v "^$"
    
    FLANNEL_ETCD_ENDPOINTS=”http://192.168.254.141:2379"
    FLANNEL_ETCD_PREFIX=”/coreos.com/network”
    c. 启动服务:
    i. systemctl enable flanneld
    ii. systemctl restart flanneld docker
    
  8. 测试:
    a. kubectl get nodes
1…456…14

Chen Fei

把我的过程记录下来,以免以后忘了

68 日志
15 分类
40 标签
© 2019 Chen Fei
由 Hexo 强力驱动 v3.7.1
|
主题 – NexT.Mist v6.3.0