在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
docker之kubernetes dashboard部署
1. 环境说明: 1). 架构: 注: 本次实验服务器环境均采用centos 7. 服务安装均采用yum install. 192.168.3.7 master 2).使用的软件包: master: docker kubernetes-master etcd flannel 3). 软件版本: docker: 1.10.3 4). 软件包说明: docker: 主角,不用说了 2. 环境初始化: 你都搞docker了,初始化该做些什么,我就不教你了. 3. 安装配置docker: 注: docker采用net模式. 确保device-mapper软件包已经安装,否则docker无法启动. 1). 安装 # yum install docker -y 2). 配置 # cat /etc/sysconfig/docker|egrep -v "^#|^$" OPTIONS='' DOCKER_CERT_PATH=/etc/docker 4. 配置master 1). 安装软件包. # yum install kubernetes-master etcd flannel-y 2). 配置etcd. # cat /etc/etcd/etcd.conf |egrep -v "^#|^$" 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.3.7:2379" ## etcd集群配置;多个etcd服务器,直接在后面加url ##启动etcd服务 3). 配置kubernetes. 在/etc/kubernetes 目录中有以下几个文件: # cd /etc/kubernetes KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ## kube启动时绑定的地址 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.3.7:2379" ## kube调用etcd的url KUBE_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 主配置文件 # 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 url KUBELET_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 2). 启动etcd服务 # systemctl start etcd 3). 启动master 和node上的flanneld服务 # systemctl start flanneld 查看ip,会出现flannel0的网络接口设备,该地址和docker0地址是一致的,如果不一致请确认以上服务是否正常启动 4). 启动运行在master上的k8s服务. 启动顺序:kube-apiserver居首. 请确认以上服务是否都有正常启动. 5). 启动运行在node上的k8s服务. 请确认以上服务是否都有正常启动. 6). 访问http://kube-apiserver:port 8. 开启k8s dashboard: 1). 在master上验证服务. # kubectl get nodes ## 获取k8s客户端. NAME STATUS AGE 192.168.3.16 Ready 6h # kubectl get namespace ## 获取k8s所有命名空间 NAME STATUS AGE default Active 17h 2). 在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.yaml namespace "kube-system" created # kubectl get namespace ## 获取k8s所有命名空间 NAME STATUS AGE default Active 17h kube-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 See http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.md for more details. 验证: # kubectl get pods --namespace=kube-system 查看该容器的详细过程: # kubectl describe pods kubernetes-dashboard-3138400848-grtfm --namespace=kube-system 当有多个node,可以用该命令中看到容器被分配到哪个node上,启动后分配的ip地址等信息. 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即可. 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! |
请发表评论