docker kubernetes dashboard安装部署详细介绍_docker

来源:脚本之家  责任编辑:小易  

docker的一些命令docker run-name mysql5.7.26-e MYSQL_ROOT_PASSWORD=3edc4rfv-d mysql:5.7.26连接mysqldocker run-it-rm mysql mysql-hdockerip-uroot-p查看docker ipdocker inspect-f"{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}"d3420658daebhttps://stackoverflow.com/questions/17157721/how-to-get-a-docker-containers-ip-address-from-the-host复制文件到docker 容器docker cp xxx.sql d3420658daeb:/xxx.sql根据dockerfile创建e79fa5e98193e58685e5aeb931333433626565imagedocker build-t air.https://stackoverflow.com/questions/36075525/how-do-i-run-a-docker-instance-from-a-dockerfile运行activemqdocker run-name="activemq"-it-rm-P webcenter/activemq:latest运行redisdocker run-name redis-d redis启动zookeeperdocker run-name zookeeper-restart always-d zookeeperwww.zgxue.com防采集请勿采集本网。

docker之kubernetes dashboard部署

Docker容器运行后,如何进入容百器进行操作呢?起初我是用SSH。如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容度器后,每个容器默认是

1. 环境说明:

docker-compose up-d 出来是个容器。dockerfile build出来是个镜像。dockerfile是自己定义自己的镜像作用。docker-compose是指定镜像的启动文件,挂载目录,环境变量等等。

1). 架构:

不行,这个版本的内核还是2.6系列的,kubernetes和docker需要内核是3.8以上的,还是安装centos7吧。

注: 本次实验服务器环境均采用centos 7. 服务安装均采用yum install.

是的,不但如此,还引入Rancher等企业级容器管理平台,提供开发、测试、发布、持续运营等容器化应用的全生命周期管理。面对多容器集群管理平台,WiseCloud能提供完善的容器管理平台基础性服务,

192.168.3.7 master

在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信

192.168.3.16 node

2).使用的软件包:

master: docker kubernetes-master etcd flannel

nodes: docker kubernetes-node flannel

3). 软件版本:

docker: 1.10.3

kubernetes*: 1.2.0

etcd: 2.3.7

4). 软件包说明:

docker: 主角,不用说了

kubernetes-master: kubernetes 服务端

kubernetes-node: kubernetes 客户端

etcd: 服务器发现的键值存储

flannel: 打通多台服务器上的docker容器之间的网络互通

2. 环境初始化:

你都搞docker了,初始化该做些什么,我就不教你了.

备份现有的yum源文件,搞一个阿里云的yum源,epel源.

地址: http://mirrors.aliyun.com

3. 安装配置docker:

注: docker采用net模式. 确保device-mapper软件包已经安装,否则docker无法启动.

1). 安装# yum install docker -y2). 配置# cat /etc/sysconfig/docker|egrep -v "^#|^$"OPTIONS=''DOCKER_CERT_PATH=/etc/docker

4. 配置master

1). 安装软件包.# yum install kubernetes-master etcd flannel-y2). 配置etcd.# cat /etc/etcd/etcd.conf |egrep -v "^#|^$"ETCD_NAME=defaultETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ## 监听地址端口ETCD_ADVERTISE_CLIENT_URLS="http://192.168.3.7:2379" ## etcd集群配置;多个etcd服务器,直接在后面加url

##启动etcd服务

# systemctl start etcd

3). 配置kubernetes.

在/etc/kubernetes 目录中有以下几个文件:

apiserver: kubernetes api 配置文件

config: kubernetes 主配置文件

controller-manager: kubernetes 集群管理配置文件

scheduler: kubernetes scheduler配置文件

# cd /etc/kubernetesKUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ## kube启动时绑定的地址KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.3.7:2379" ## kube调用etcd的urlKUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/16" ## 此地址是docker容器的地址段KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"KUBE_API_ARGS=""注意KUBE_ADMISSION_CONTROL这一行的配置: 移除ServiceAccount 项目,否则在后期中会报出没有认证错误.# cat config |egrep -v "^#|^$"KUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url

controller-manager scheduler 两个文件采用默认配置即可.

5. 配置nodes

1). 安装软件包.

# yum install kubernetes-node flannel -y

2). 配置kubernetes node

安装完软件包之后,会在/etc/kubernetes目录下出现以下文件:

config: kubernetes 主配置文件

kubelet: kubelet node配置文件

proxy: kubernetes proxy 配置文件

# cd /etc/kubernetes# cat config |egrep -v "^#|^$"KUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url# cat kubelet |egrep -v "^#|^$"KUBELET_ADDRESS="--address=0.0.0.0" ## kubelet 启动后绑定的地址KUBELET_PORT="--port=10250" ## kubelet 端口KUBELET_HOSTNAME="--hostname-override=192.168.3.16" ##kubelet的hostname,在master执行kubectl get nodes显示的名字KUBELET_API_SERVER="--api-servers=http://192.168.3.7:8080" ## kube master api urlKUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"KUBELET_ARGS=""

proxy 配置默认即可.

6. 网络配置:

master和node均已经安装flannel

master配置:

# cat /etc/sysconfig/flanneld |egrep -v "^#|^$"FLANNEL_ETCD="http://192.168.3.7:2379"FLANNEL_ETCD_KEY="/kube/network"# etcdctl mk /kube/network/config '{"Network":"172.17.0.0/16"}' ## 注意此处的ip和上文中出现的ip地址保持一致.

node配置:

# cat /etc/sysconfig/flanneld |egrep -v "^#|^$"FLANNEL_ETCD="http://192.168.3.7:2379"FLANNEL_ETCD_KEY="/kube/network"

7. 启动服务.

1). 启动docker服务.

# systemctl start docker

# ps aux|grep docker ## 确认下服务是否正常启动.如果没有启动请移步/var/log/message看问题

2). 启动etcd服务

# systemctl start etcd

3). 启动master 和node上的flanneld服务

# systemctl start flanneld

查看ip,会出现flannel0的网络接口设备,该地址和docker0地址是一致的,如果不一致请确认以上服务是否正常启动

4). 启动运行在master上的k8s服务.

启动顺序:kube-apiserver居首.

# systemctl start kube-apiserver

# systemctl start kube-controller-manager

# systemctl start kube-scheduler

请确认以上服务是否都有正常启动.

5). 启动运行在node上的k8s服务.

# systemctl start kube-proxy

# systemctl start kubelet

请确认以上服务是否都有正常启动.

6). 访问http://kube-apiserver:port

http://192.168.3.7:8080 查看所有请求url

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

8. 开启k8s dashboard:

1). 在master上验证服务.# kubectl get nodes ## 获取k8s客户端.NAME STATUS AGE192.168.3.16 Ready 6h# kubectl get namespace ## 获取k8s所有命名空间NAME STATUS AGEdefault Active 17h2). 在master上新建kube-system的namespace# cd /usr/local/src/docker# cat kube-namespace.yaml{"kind": "Namespace","apiVersion": "v1","metadata": {"name": "kube-system"}}# kubectl create -f kube-namespace.yamlnamespace "kube-system" created# kubectl get namespace ## 获取k8s所有命名空间NAME STATUS AGEdefault Active 17hkube-system Active 17h

3). 在master上新建kube-dashboard.yaml

wget http://docs.minunix.com/docker/kubernetes-dashboard.yaml -O /usr/local/src/docker/kube-dashboard.yaml

请将文件中apiserver-host修改为自己的kebu-apiserver

创建pod:

# kubectl create -f kube-dashboard.yaml

deployment "kubernetes-dashboard" created

You have exposed your service on an external port on all nodes in your

cluster. If you want to expose this service to the external internet, you may

need to set up firewall rules for the service port(s) (tcp:31576) to serve traffic.

See http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.md for more details.

service "kubernetes-dashboard" created

验证:

# kubectl get pods --namespace=kube-system

NAME READY STATUS RESTARTS AGE

kubernetes-dashboard-3138400848-grtfm 1/1 ContainerCreating 0 27s

查看该容器的详细过程:

# kubectl describe pods kubernetes-dashboard-3138400848-grtfm --namespace=kube-system

当有多个node,可以用该命令中看到容器被分配到哪个node上,启动后分配的ip地址等信息.

如果在结果中看到"State: Running"时,请移步到node查看容器运行状态,应该也是up的状态.

4). 此时可以通过http://kube-apiserver:port/ui访问

http://192.168.3.7:8080/ui

开始尽情使用docker吧!

9. 注意点&遇到的问题:

1). 注意服务的启动顺序,特别是master,在确保etcd启动的情况下,先启动apiserver

2). 注意yaml文件的格式缩进.

3). 如果发现刚创建的pod的status是depening,原因可能有几点:其一,客户端配置有listen 127.0.0.1的服务,master无法与其建立连接;其二,环境初始化没有做好;其三,移步node,使用docker logs 查看日志

4). kubernetes-dashboard.yaml文件中的containers images地址目前为公开的,09月30日会关闭.

5). 如果自己有国外vps,可在服务器上创建docker registry;先pull下google的k8s dashboard,然后push到自己的registry,自己修改下yaml中的image即可.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge,[root@minion1~]#ovs-vsctl add-br obr0接下来建立gre,并将新建的gre0添加到obr0,在minion1上执行如下命令,[root@minion1~]#ovs-vsctl add-port obr0 gre0-set Interface gre0 type=gre options:remote_ip=192.168.230.5在minion2上执行,[root@minion2~]#ovs-vsctl add-port obr0 gre0-set Interface gre0 type=gre options:remote_ip=192.168.230.4至此,minion1和minion2之间的隧道已经建立。然后我们在minion1和minion2上创建Linux网桥kbr0替代Docker默认的docker0(我们假设minion1和minion2都已安装Docker),设置minion1的kbr0的地址为172.17.1.1/24,minion2的kbr0的地址为172.17.2.1/24,并添加obr0为kbr0的接口,以下命令在minion1和minion2上执行。[root@minion1~]#brctl addbr kbr0/创建linux bridge[root@minion1~]#brctl addif kbr0 obr0/添加obr0为kbr0的接口[root@minion1~]#ip link set dev docker0 down/设置docker0为down状态[root@minion1~]#ip link del dev docker0/删除docker0为了使新建的kbr0在每次系统重启后任然有效,我们在/etc/sysconfig/network-scripts/目录下新建minion1的ifcfg-kbr0如下:DEVICE=kbr0ONBOOT=yesBOOTPROTO=staticIPADDR=172.17.1.1NETMASK=255.255.255.0GATEWAY=172.17.1.0USERCTL=noTYPE=BridgeIPV6INIT=no同样在minion2上新建ifcfg-kbr0,只需修改ipaddr为172.17.2.1和gateway为172.17.2.0即可,然后执行systemctl restart network重启系统网络服务,你能在minion1和minion2上发现kbr0都设置了相应的IP地址。为了验证我们创建的隧道是否能通信,我们在minion1和minion2上相互ping对方kbr0的IP地址,从下面的结果发现是不通的,经查找这是因为在minion1和minion2上缺少访问172.17.1.1和172.17.2.1的路由,因此我们需要添加路由保证彼此之间能通信。[root@minion1 network-scripts]#ping 172.17.2.1PING 172.17.2.1(172.17.2.1)56(84)bytes of data.C172.17.2.1 ping statistics-2 packets transmitted,0 received,100%packet loss,time 1000ms[root@minion2~]#ping 172.17.1.1PING 172.17.1.1(172.17.1.1)56(84)bytes of data.C172.17.1.1 ping statistics-2 packets transmitted,0 received,100%packet loss,time 1000ms由于通过ip route add添加的路由会在下次系统重启后失效,为此我们在/etc/sysconfig/network-scripts目录下新建一个文件route-eth0存储路由,这里需要注意的是route-eth0和ifcfg-eth0的黑体部分必须保持一致,否则不能工作,这样添加的路由在下次重启后不会失效。为了保证两台minion的kbr0能相互通信,我们在minion1的route-eth0里添加路由172.17.2.0/24 via 192.168.230.5 dev eno16777736,eno16777736是minion1的网卡,同样在minion2的route-eth0里添加路由172.17.1.0/24 via 192.168.230.4 dev eno16777736。重启网络服务后再次验证,彼此kbr0的地址可以ping通,如:[root@minion2 network-scripts]#ping 172.17.1.1PING 172.17.1.1(172.17.1.1)56(84)bytes of data.64 bytes from 172.17.1.1:icmp_seq=1 ttl=64 time=2.49 ms64 bytes from 172.17.1.1:icmp_seq=2 ttl=64 time=0.512 msC172.17.1.1 ping statistics-2 packets transmitted,2 received,0%packet loss,time 1002msrtt min/avg/max/mdev=0.512/1.505/2.498/0.993 ms内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • kubernetes1.5.2升级到kubernetes1.10一些主要的设定修改记录
  • kubernetes(k8s)基础介绍
  • centos7搭建docker私人仓库的方法(kubernetes)
  • 使用kubeadm在centos7.2上部署kubernetes集群的方法
  • docker实践—centos7上部署kubernetes详解
  • 基于kubernetes和docke实现留言簿案例
  • 详解php版本兼容之openssl调用参数
  • php7安装openssl扩展方法
  • 详解linux(centos7)下安装openssl安装图文方法
  • 使用openssl生成kubernetes证书的介绍
  • docker下安装nginx的方法
  • 利用volume在主机和docker容器文件传输的方法
  • docker容器跨主机通信中直接路由方式详解
  • 如何解决linux系统下docker占满分区的问题
  • docker image删不掉的解决办法
  • 基于docker的mongodb实现授权访问的方法
  • 分享ubuntu19无法安装docker源问题
  • 详解docker与fastdfs的安装命令及使用
  • docker-compose ports和expose的区别详解
  • docker 中快速安装tensorflow环境的方法步骤
  • 如何在Docker上部署Kubernetes
  • Docker启动命令使用kubernetes上传?
  • 如何评价王垠的《Go语言,Docker和Kubernetes》
  • 如何在VMware vSphere上安装Kubernetes来运行Docker
  • kubernetes怎么使用docker中的镜像
  • docker-compose配置文件和kubernetes配置文件的区别
  • 如何在VMware vSphere上安装Kubernetes来运行Docker
  • 睿云智合WiseCloud是否支持Docker、Kubernetes等主流容器调度引擎?
  • 如何将Docker应用持续部署至Kubernetes当中
  • Docker Swarm Mode与Kubernetes,哪一个服务的设置与创建更为简便
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云计算技术云其它首页服务器云和虚拟化dockerkubernetes1.5.2升级到kubernetes1.10一些主要的设定修改记录kubernetes(k8s)基础介绍centos7搭建docker私人仓库的方法(kubernetes)使用kubeadm在centos7.2上部署kubernetes集群的方法docker实践—centos7上部署kubernetes详解基于kubernetes和docke实现留言簿案例详解php版本兼容之openssl调用参数php7安装openssl扩展方法详解linux(centos7)下安装openssl安装图文方法使用openssl生成kubernetes证书的介绍docker下安装nginx的方法利用volume在主机和docker容器文件传输的方法docker容器跨主机通信中直接路由方式详解如何解决linux系统下docker占满分区的问题docker image删不掉的解决办法基于docker的mongodb实现授权访问的方法分享ubuntu19无法安装docker源问题详解docker与fastdfs的安装命令及使用docker-compose ports和expose的区别详解docker 中快速安装tensorflow环境的方法步骤docker 清理命令集锦docker 给运行中的容器设置端口映ubuntu14.04+docker的安装及使用docker获取镜像报错docker: errodocker.service启动失败:unit ndocker容器如何优雅的终止详解centos7 安装docker 解决启动不了详解docker国内镜像拉取和镜像加浅谈docker-compose网络设置之nedocker如何固定ip设置的方法docker初识之五分钟认识dockerdocker端口映射的实现浅谈docker数据持久化docker创建一个nginx服务器的方法步骤如何让docker中的mysql启动时自动执行sqlcentos 6.5中安装docker的步骤(简洁版)zabbix监控docker容器状态【推荐】docker的基本使用笔记使用 docker-compose 运行 mysql的方法如何快速清理 docker 资源的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved