kubernetes+docker+dashboard安装部署详细步骤

对docker和kubernetes都不熟悉,搜了很多指导,在kubernetes集群中安装dashboard的时候总是会遇到各种问题,花了两天时间试了很多方法,终于安装成功,主体步骤来自https://blog.csdn.net/chenyufeng1991/article/details/79251498,补全安装过程中遇到的问题及解决方法。

实验环境:
1.OS:Centos7.5
每个操作系统设置一个主机IP
2.使用的软件包
master:docker/kubernetes-master/etcd/flannel
nodes:docker/kubernetes-node/flannel
3.软件包说明
kubernetes-master:Kubernetes服务端
kubernetes-node:Kubernetes客户端
etcd:服务发现的键值存储(可以理解为中间件,flannel服务通过它记录分配给各pod的地址段,每次分配前会在etcd中查询,从而不会重复分配)
flannel:打通多台服务器上的docker容器之间的网路互通

前提条件:
1.master和node修改SELINUX配置文件,SELINUX=disabled,重启操作系统
2.master和node执行systemctl stop firewalld和systemctl disable firewalld关闭防火墙,有安全需求的,可以根据需要启动防火墙,放开相应端口
3.master和node修改主机名,可以使用hostnamectl命令直接修改,也可以修改/etc/hostname文件,将主机名与IP地址对应关系写入/etc/hosts文件
4.开启路由转发功能,在master和node的/etc/sysctl.conf中添加net.ipv4.ip_forward = 1 执行sysctl -p执行该文件

安装步骤:
1.master安装配置

yum install -y kubernetes-master etcd flannel docker
此处如果有低版本kubectl等工具会报错,使用rpm -e卸载所有依赖,再次执行此命令即可

etcd安装完成后配置
vi /etc/etcd/etcd.conf

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" ###此处localhost修改为0.0.0.0
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" ###此处localhost修改为主机IP地址,如果多个etcd构成集群,直接在后面加url

完成以后配置后,启动etcd,加入自启动
systemctl start etcd
systemctl enable etcd

配置Kubernetes,进入/etc/kubernetes目录:
vi apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ###apiserver服务绑定的地址(个人理解为apiserver监听地址)
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.149.134:2379" ###url里面的IP地址修改为etcd配置文件中设置的主机IP地址
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/16" ###Kubernetes可以分配的IP范围,Kubernetes启动的每一个pod以及service都会分配一个IP地址,将会从这个范围分配。是Services管理的集群IP地址范围。后面etcd设置存储地址段的目录时,要与该地址段保持一致。
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" ###是因为安装kubernetes而修改的配置

vi config
KUBE_MASTER="--master=http://192.168.149.134:8080" ###此处url中的IP地址修改为master主机IP地址

2.node配置
yum install -y kubernetes-node flannel docker

配置kubernetes,进入/etc/kubernetes目录:
vi config
KUBE_MASTER="--master=http://192.168.149.134:8080" ###此处url中的IP地址修改为master主机IP地址

vi kubelet
KUBELET_ADDRESS="--address=0.0.0.0" ###kubelet启动后绑定的地址

KUBELET_HOSTNAME="--hostname-override=node" ###此处为master执行get nodes时显示的名称,填可以解析的主机名或者IP地址,不能随意起

KUBELET_API_SERVER="--api-servers=http://192.168.149.134:8080" ###此处IP地址为master的主机IP地址

3.配置flannel,master及node节点上flannel的配置都要一样
master及node节点,进入/etc/sysconfig目录

vi flanneld
FLANNEL_ETCD_ENDPOINTS="http://http://192.168.149.134:2379" ###此处IP地址为etcd配置文件中设置的主机IP地址

FLANNEL_ETCD_PREFIX="/kube/network" ###下面etcd执行命令时使用该目录

然后在master节点上执行以下命令:
etcdctl mkdir /kube/network
etcdctl mk /kube/network/config ‘{"Network":"172.17.0.0/16"}‘ ###此处网段要与前面apiserver里面配置的参数一致

4.分别在master、nodes上启动docker、etcd、flanneld并加入自启动
master:
systemctl start docker etcd flanneld
systemctl enable docker etcd flanneld
node:
systemctl start docker flanneld
systemctl enable docker flanneld

5.启动服务
启动master上的k8s服务,先启动apiserver
systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl enable kube-apiserver kube-controller-manager kube-scheduler

启动nodes上的k8s服务
systemctl start kube-proxy kubelet
systemctl enable kube-proxy kubelet

6.验证
访问http://kube-apiserver:port
http://192.168.149.134:8080/ 查看所有请求url。

http://192.168.149.134:8080/healthz/ping 查看健康状况。

         在master上查看一些服务是否成功开启

         获取k8s客户端
         kubectl get nodes  ###可以获取到node
         获取k8s命名空间
         kubectl get namespace ###要有kube-system

         7.开始安装dashboard(坑比较多的地方)
         master开始创建dashboard ui,在该步骤之前要先有kube-system命名空间
         在master上拉取以下代码:wget http://docs.minunix.com/docker/kubernetes-dashboard.yaml   ###wget下载不下来可以用curl -O 这个url下载下来,将里面的- --apiserver-host=http://192.168.149.134:8080  IP地址替换成自己的master主机IP地址,通过master的apiserver来访问运行在node容器中的dashboard

如果下载不下来,可以直接创建kubernetes-dashboard.yaml文件,将下面内容复制到该文件中保存即可

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  labels:
    app: kubernetes-dashboard
    version: v1.1.1
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kubernetes-dashboard
  template:
    metadata:
      labels:
        app: kubernetes-dashboard
    spec:
      containers:
      - name: kubernetes-dashboard
        image: daocloud.io/minunix/kubernetes-dashboard-amd64:v1.1.1
        imagePullPolicy: Always
        ports:
        - containerPort: 9090
          protocol: TCP
        args:
          # Uncomment the following line to manually specify Kubernetes API server Host
          # If not specified, Dashboard will attempt to auto discover the API server and connect
          # to it. Uncomment only if the default does not work.
        - --apiserver-host=http://192.168.3.7:8080  ## 请修改为自己的kebu-apiserver
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 9090
  selector:
    app: kubernetes-dashboard
    如果要通过node的IP地址直接访问dashboard,需要在ports里面添加nodeport
    最后的ports部分替换为:
spec:

type: NodePort
ports:

  • port: 80
    targetPort: 9090
    nodePort: 30090 ###该端口自己定义,有取值范围
    selector:
    app: kubernetes-dashboard

    根据以上yaml创建pods:

    kubectl create -f kubernetes-dashboard.yaml

    如果报错,根据提示信息进行处理,如果修改yaml后重新执行上面命令提示已存在,可以执行以下删除命令后再执行创建命令

    kubectl delete -f kubernetes-dashboard.yaml

    8.查看是否创建成功:

    kubectl get pods --namespace=kube-system ###--namespace是指定在哪个命名空间中的pod,不加的话在default中查找

    容器status不为running说明容器状态不正常
    
    使用kubectl describe pods kubernetes-dashboard-2496492025-rwczb --namespace=kube-system命令查看这个容器创建过程中出现的问题,kubernetes-dashboard-2496492025-rwczb是上面命令查询结果中pod的名称
    
    根据提示信息发现是镜像拉取失败,细节是找不到文件或者文件夹,查看/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt  是一个软链接,但是链接过去后并没有真实的/etc/rhsm,进行如下操作:
    1).yum安装
       yum install *rhsm*
         安装完成后查看上面的软连接是否有真实的连接文件,如果有,问题解决,手动拉取镜像文件
     docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest 
    
    2).如果上面的方法无法解决软连接问题,执行下面步骤
     curl -O  http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
    
         执行以下命令
     rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
    
         然后再执行docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest 手动拉取镜像
         再次执行get pods命令,查看pod状态,发现status变为running,说明应用已正常运行。
    
        9.访问dashboard
    
        可以通过三种方式访问dashboard
        1).kubernetes-dashboard 服务暴露了 NodePort,可以使用 http://NodeIP:nodePort 地址访问 dashboard;

    2).通过 kube-apiserver 访问 dashboard,使用http://masterip:8080 地址访问
    3).通过 kubectl proxy 访问 dashboard:

        10.常用日志查看命令:
        journalctl -xue | kubelet 根据输出解决安装的问题

    kubectl describe pods <podName> -n=kube-system 查看内部pod启动错误的原因
    kubectl logs -f pods <podName> -n=kube-system 查看容器内部的日志

原文地址:http://blog.51cto.com/13992834/2287015

时间: 2024-10-12 09:41:30

kubernetes+docker+dashboard安装部署详细步骤的相关文章

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

1. 安装规划 1.1 部署节点说明 etcd集群规划 etcd 中心集群 192.168.2.247192.168.2.248192.168.2.249 etcd 事件集群 192.168.2.250192.168.2.251192.168.2.252 Kubernetes master节点集群规划 192.168.3.10192.168.3.11192.168.3.12192.168.3.13192.168.3.14 Kubernetes master vip 192.168.4.1192.

Mac 安装Mysql 详细步骤方法

Mac 安装Mysql 详细步骤方法 第一步: 登陆官网:https://www.mysql.com 进入, 点击下方的DOWNLOADS -> Community->MySQL Community Server下载dgm文件,选择不登陆直接下载,下载后常规安装,设置自己的mysql密码 记住密码 第二步: 安装好mysql后直接终端是不可以运行的,可以在偏好设置里面启动以及停止mysql服务 第三步: 配置路径打开终端 输入:vim ~/.bash_profile 在图中添加 mysql路径

K8s+dashboard安装部署 不错

系统安装使用虚拟机安装两个centos系统,在/etc/hosts里增加两行192.168.140.128 kuber-master192.168.140.129 kuber-node1 关闭防火墙systemctl stop firewalld & systemctl disable firewalld 关闭selinuxsed -i ‘s/enforcing/disabled/’ /etc/selinux/configsetenforce 0 关闭swapswapoff -a #临时关闭vi

K8s多节点部署详细步骤,附UI界面的搭建

K8s多节点部署 需要准备的环境: 6台centos7设备:192.168.1.11 master01192.168.1.12 node1192.168.1.13 node2192.168.1.14 master02192.168.1.15 lb1192.168.1.16 lb2VIP:192.168.1.100 实验步骤: 1:自签ETCD证书 2:ETCD部署 3:Node安装docker 4:Flannel部署(先写入子网到etcd)---------master----------5:自

Ubuntu下安装Nginx详细步骤

Nginx安装之前需要三个支持: 模块依赖性 ①gzip 模块需要 zlib 库 ②rewrite 模块需要 pcre 库 ③ssl 功能需要 openssl 库 预先编译好的包: sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev ububtu平台编译环境可以使用以下指令: apt-get install build-essential apt-get install libtool 一般我们

Docker容器安装nginx基本步骤Yum版

首先我们来科普一下nginx: Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日. 其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的We

kubernetes 1.14安装部署dashboard

简单介绍: Dashboard是一个基于web的Kubernetes用户界面.您可以使用Dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障诊断,并管理集群资源.可以使用Dashboard来获得运行在集群上的应用程序的概观,以及创建或修改单个Kubernetes资源(如Deployments, Jobs, DaemonSets等).例如,您可以扩展deployment.启动滚动更新.重启pod或使用deploy向导部署新应用程序. 官网:https://ku

kubernetes集群安装部署

部署环境说明: 1.CENTOS 7.4 2.Docker version 17.05.0 3.etcd Version: 3.3.8 4.flannel-v0.10.0 node节点上运行: Kubelet kube-proxy Docker flannel MASTER节点上运行: Etcd flannel kube-apiserver kube-controller-manager kube-scheduler IP    Address Role CPU Memory 192.168.1

Linux下python安装升级详细步骤 | Python2 升级 Python3 转载

Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如何升级呢? 下面老徐详细讲解升级步骤: 首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 下载完成后到下载目录下,解压 tar -xzvf Python-3.3