Docker Kubernetes 环境搭建
节点规划
- 版本
- 系统:Centos 7.4 x64
- Docker版本:18.09.0
- Kubernetes版本:v1.8
- etcd存储版本:etcd-3.2.22
- 部署
- 管理节点:192.168.1.79
- 安装插件:etcd
- 安装插件:kube-apiserver
- 安装插件:kube-controller-manager
- 安装插件:kube-scheduler
- 工作节点:192.168.1.78
- 安装插件:kubelet
- 安装插件:kube-proxy
- 安装插件:docker
- 工作节点:192.168.1.77
- 安装插件:kubelet
- 安装插件:kube-proxy
- 安装插件:docker
Kubernetes 部署方式
1、kubeadm工具快捷安装kubernetes集群。kubeadm工具安装会屏蔽很多细节。
2、通过kubernetes二进制包安装。
- kubernetes二进制包:https://github.com/kubernetes/kubernetes
- kubernetes是基于GO语言开发的需要安装Go语言环境。
注:这里我采用第2种,由于安装环境繁琐,将事先编译好的Kubernetes工具包来进行环境部署。
- kubernetes工具包:https://pan.baidu.com/s/1xvAadiCZmxKs22Zpqw3VNQ
- 密码:pyjq
1、管理节点:安装etcd存储
1.1、安装etcd存储
yum install etcd -y
1.2、编辑配置文件添加配置参数
vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
1.3、重启服务,添加开机自启动
systemctl enable etcd systemctl restart etcd
1.4、查看监听端口
netstat -antp | grep etcd
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 15737/etcd tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 15737/etcd tcp 0 0 127.0.0.1:2379 127.0.0.1:59936 ESTABLISHED 15737/etcd tcp 0 0 127.0.0.1:59936 127.0.0.1:2379 ESTABLISHED 15737/etcd
2、管理节点:安装kubernetes Master 运行节点组织
2.1、解压master包加入执行文件
unzip master.zip;chmod +x *
2.2、创建目录
mkdir /opt/kubernetes/{bin,cfg} -p
2.3、将压缩文件kube移动到bin目录下
mv kube-apiserver kube-controller-manager kube-scheduler kubectl /opt/kubernetes/bin
2.4、修改apiserver.sh、controller-manager.sh、scheduler.sh脚本文件
vim apiserver.sh
# Mster监听地址IP MASTER_ADDRESS=${1:-"192.168.1.79"} # ETCD数据库服务地址 ETCD_SERVERS=${2:-"http://192.168.1.79:2379"}
vim controller-manager.sh
# Mster监听地址IP MASTER_ADDRESS=${1:-"192.168.1.79"}
vim scheduler.sh
# Mster监听地址IP MASTER_ADDRESS=${1:-"192.168.1.79"}
2.5、运行kubernetes启动脚本 masterIP地址默认端口8080 加etcd地址
./apiserver.sh 192.168.1.79 http://192.168.1.79:2379
命令:ps -ef | grep kuberoot 16724 1 99 15:47 ? 00:00:02 /opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=http://192.168.1.97:2379 --storage-backend=etcd2 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --kubelet-port=10250 --advertise-address=192.168.1.97 --allow-privileged=false --service-cluster-ip-range=10.10.10.0/24
命令:journalctl -u kube-apiserver-- Logs begin at 三 2018-11-07 10:10:28 CST, end at 一 2018-11-12 15:44:12 CST. -- 11月 12 15:39:57 management systemd[1]: Started Kubernetes API Server. 11月 12 15:39:57 management systemd[1]: Starting Kubernetes API Server... 11月 12 15:39:57 management kube-apiserver[15964]: Flag --kubelet-port has been deprecated, kubelet-port is deprecated and will be removed. 11月 12 15:39:57 management kube-apiserver[15964]: I1112 15:39:57.747966 15964 flags.go:52] FLAG: --address="0.0.0.0" 11月 12 15:39:57 management kube-apiserver[15964]: I1112 15:39:57.748035 15964 flags.go:52] FLAG: --admission-control="[AlwaysAdmit]" 11月 12 15:39:57 management kube-apiserver[15964]: I1112 15:39:57.748050 15964
2.6、运行scheduler.sh调度脚本 加masterIP地址默认端口8080
./scheduler.sh 192.168.1.79
命令:journalctl -u kube-scheduler-- Logs begin at 三 2018-11-07 10:10:28 CST, end at 一 2018-11-12 15:50:36 CST. -- 11月 12 15:49:51 management systemd[1]: Starting Kubernetes Scheduler... 11月 12 15:49:52 management kube-scheduler[16963]: I1112 15:49:52.010384 16963 flags.go:52] FLAG: --address="0.0.0.0" 11月 12 15:49:52 management kube-scheduler[16963]: I1112 15:49:52.010558 16963 flags.go:52] FLAG: --algorithm-provider="DefaultProvider" 11月 12 15:49:52 management kube-scheduler[16963]: I1112 15:49:52.010579 16963 flags.go:52] FLAG: --alsologtostderr="false" 11月 12 15:49:52 management kube-scheduler[16963]: I1112 15:49:52.010588 16963 flags.go:52] FLAG: --contention-profiling="false" 11月 12 15:49:52 management kube-scheduler[16963]: I1112 15:49:52.010651 16963 flags.go:52] FLAG: --kubeconfig=""
2.7、运行controller-manager.sh管理端控制脚本 加masterIP地址默认端口8080
./controller-manager.sh 192.168.1.79
命令:journalctl -u kube-controller-manager-- Logs begin at 三 2018-11-07 10:10:28 CST, end at 一 2018-11-12 15:55:57 CST. -- 11月 12 15:52:54 management systemd[1]: Started Kubernetes Controller Manager. 11月 12 15:52:54 management systemd[1]: Starting Kubernetes Controller Manager... 11月 12 15:52:54 management kube-controller-manager[17311]: I1112 15:52:54.296770 17311 flags.go:52] FLAG: --address="0.0.0.0" 11月 12 15:52:54 management kube-controller-manager[17311]: I1112 15:52:54.296977 17311 flags.go:52] FLAG: --allocate-node-cidrs="false" 11月 12 15:52:54 management kube-controller-manager[17311]: I1112 15:52:54.297001 17311 flags.go:52] FLAG: --allow-untagged-cloud="false" 11月 12 15:52:54 management kube-controller-manager[17311]: I1112 15:52:54.297007 17311 flags.go:52] FLAG: --allow-verification-with-non-compliant-keys="false" 11月 12 15:52:54 management kube-controller-manager[17311]: I1112 15:52:54.297015 17311 flags.go:52] FLAG: --alsologtostderr="false"
2.8、将kubernetes添加到环境变量,并设置立即生效
echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile source /etc/profile
3、工作节点1与2:kubernetes Node 运行节点组织
3.1、解压node包并加入执行文件
unzip node.zip;chmod +x *
3.2、创建目录
mkdir -p /opt/kubernetes/{bin,cfg}
3.3、将压缩文件kube移动到bin目录下
mv kubelet kube-proxy /opt/kubernetes/bin
3.4、修改脚本配置文件
vim kubelet.sh
# MASTER服务端地址 MASTER_ADDRESS=${1:-"192.168.1.79"} # 本地工作节点地址 NODE_ADDRESS=${2:-"192.168.1.78"} # DNS地址 DNS_SERVER_IP=${3:-"10.10.10.2"} DNS_DOMAIN=${4:-"cluster.local"} # 配置文件地址 主要用于连接API服务 KUBECONFIG_DIR=${KUBECONFIG_DIR:-/opt/kubernetes/cfg}
3.5、禁用所有的swap分区,不然启动会报错
swapoff -a
3.6、启动kubelet.sh管理本机运行容器生命周期服务脚本
# ./kubelet.sh master地址 本机地址 DNS地址 ./kubelet.sh 192.168.1.79 192.168.1.78 10.10.10.2
命令:ps -aux | grep kubeletroot 57592 2.9 0.8 622884 72492 ? Ssl 16:30 0:01 /opt/kubernetes/bin/kubelet --logtostderr=true --v=4 --address=192.168.1.78 --hostname-override=192.168.1.78 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --allow-privileged=false --cluster-dns=10.10.10.2 --cluster-domain=cluster.local root 57708 0.0 0.0 112732 2304 pts/0 S+ 16:31 0:00 grep --color=auto kubelet
命令:journalctl -u kubelet-- Logs begin at 三 2018-11-07 09:36:45 CST, end at 一 2018-11-12 16:32:28 CST. -- 11月 12 16:20:08 slave02 systemd[1]: Started Kubernetes Kubelet. 11月 12 16:20:08 slave02 systemd[1]: Starting Kubernetes Kubelet... 11月 12 16:20:08 slave02 kubelet[57178]: I1112 16:20:08.295744 57178 flags.go:52] FLAG: --address="192.168.1.78" 11月 12 16:20:08 slave02 kubelet[57178]: I1112 16:20:08.295853 57178 flags.go:52] FLAG: --allow-privileged="false" 11月 12 16:20:08 slave02 kubelet[57178]: I1112 16:20:08.295887 57178 flags.go:52] FLAG: --alsologtostderr="false" 11月 12 16:20:08 slave02 kubelet[57178]: I1112 16:20:08.295899 57178 flags.go:52] FLAG: --anonymous-auth="true"
命令:netstat -antp | grep 10250tcp 0 0 192.168.1.78:10250 0.0.0.0:* LISTEN 57592/kubelet
3.7、启动网络代理proxy.sh脚本
# ./proxy.sh Master地址 本地地址 ./proxy.sh 192.168.1.79 192.168.1.78
命令:journalctl -u kube-proxy-- Logs begin at 三 2018-11-07 09:36:45 CST, end at 一 2018-11-12 16:36:30 CST. -- 11月 12 16:34:39 slave02 systemd[1]: Started Kubernetes Proxy. 11月 12 16:34:39 slave02 systemd[1]: Starting Kubernetes Proxy... 11月 12 16:34:39 slave02 kube-proxy[57883]: W1112 16:34:39.787713 57883 server.go:191] WARNING: all flags other than --config, --write-config-to, and --cleanup are deprecated. Please begi 11月 12 16:34:39 slave02 kube-proxy[57883]: W1112 16:34:39.801807 57883 server_others.go:263] Flag proxy-mode="" unknown, assuming iptables proxy 11月 12 16:34:39 slave02 kube-proxy[57883]: I1112 16:34:39.804394 57883 server_others.go:117] Using iptables Proxier. 11月 12 16:34:39 slave02 kube-proxy[57883]: W1112 16:34:39.805553 57883 server.go:580] Failed to retrieve node info: Get
4、管理节点:测试查看集群节点是否加入
查看节点加入信息
kubectl get node
NAME STATUS ROLES AGE VERSION 192.168.1.77 Ready <none> 5m v1.8.0 192.168.1.78 Ready <none> 5m v1.8.0
查看组件运行状态
kubectl get componentstatus
NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health": "true"}
查看服务版本
kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:46:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
该配置文件通过下边官方配置文件后进行的修改: kubernetes二进制包: /kubernetes/cluster/centos/master/scripts/apiserver.sh 注:启动脚本将二进制命令交给系统 注:systemd管理服务启动后由systemd管理,都设置了开机启动。 注:标签默认指定名称生成。
一、kubelet再创建pod时会先下载一个pause镜像,这个镜像用于容器基础网络管理,但这个镜像仓库。(gcr.io/google_containers/pause-amd64:3.0)是国外的,不能顺利下载。解决办法: # 国内下载pause镜像 docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 # tag是kubernetes默认的仓库和版本好地址。 docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0或者# 指定镜像仓库位置 --pod-infra-container-image=registry.cn-hangzhou.zliyuncs.com/google-containers/pause-amd64.3.0 再或者翻墙二、Docker默认镜像仓库是Docker Hub,可能会下载速度慢或者超时。改善方法: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://04be47cf.m.daocloud.io# 1、下载国内的pause镜像 docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0# 2、设置tag默认的仓库和版本好地址。 docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0# 工作节点:查看docker镜像 docker images registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64 3.0 99e59f495ffa 2 years ago 747kB3、工作节点:部署国内镜像 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://04be47cf.m.daocloud.io4、重启镜像 systemctl restart docker 5、查看切换地址 cat /etc/docker/daemon.json {"registry-mirrors": ["http://04be47cf.m.daocloud.io"]}
Docker Kubernetes 环境搭建相关推荐
- docker开发环境搭建(windows)
目录 Docker开发环境搭建 1.1mysql 1.1.1拉取镜像 1.1.2本地新建目录(windows为例) 1.1.3创建容器并添加本地映射 1.1.4连接容器数据库验证成功 2.1nacos ...
- Celery简介及Docker测试环境搭建
Celery 简介 任务队列一般用于线程或计算机之间分配工作的一种机制. 任务队列的输入是一个称为任务的工作单元,有专门的工作进行不断的监视任务队列,进行执行新的任务工作. Celery 通过消息机制 ...
- docker always_Ubuntu+Docker+STF环境搭建
Ubuntu 提前先安装配置好 Ubuntu server 14.04.5 参考资料:Ubuntu 16.04 Server 版安装过程图文详解 Dcoker安装 Ubuntu 14.04/16.04 ...
- kubernetes环境搭建与实例应用
目录 1.kubernetes简介 1.1 什么是k8s 1.2 k8s发展史 2.kubernetes核心功能 3.kubernetes应用场景 4.kubernetes核心组件 4.1 etcd服 ...
- Docker php 环境搭建dockerfile
搭建基于ubuntu的基础环境: 参考: http://open.daocloud.io/ru-he-kai-fa-yi-ge-php-mysql-de-docker-hua-ying-yong/ h ...
- Kubernetes 环境搭建 - MacOS
准备工作 1.Mac 环境需求 Minikube 要求在 BIOS 中启用 VT-x / AMD-v 虚拟化, 要检查这是否在OSX / macOS上运行,请执行以下操作: sysctl -a | g ...
- 基于kubernetes环境搭建wordpress
集群情况: k8s环境是1.25.3,操作系统为ubuntu20.04版本 主节点 k8s-master01 10.0.0.12 ubuntu20.04 工作节点1 k8s-node01 10.0.0 ...
- 极智开发 | 昇腾atlas300 docker开发环境搭建
遵循 驱动 -> 固件的安装顺序. 容器内npu驱动安装 有两种方式: 1.宿主机内已经安装好了驱动,容器内调用宿主机的驱动: 2.管你宿主机有没有装驱动,我在容器里自己装: 1.宿主 ...
- 【shopify 1】调研出海项目,发现shopify没有java的相关SDK接口,但是找到一个最新2022年6月的Java项目分享了相关代码,使用docker进行环境搭建、编译,并成功启动
目录 前言 1,关于shopify java调研 2,发现一个新的关于shopify的JavaSDK开源项目是2022年6月发布的 3,使用OAuth2 进行授权的逻辑 4,解决相关问题,解决配置依赖 ...
最新文章
- 真惨!连各大编程语言都摆起地摊了!
- 钱学森最后一次系统谈话:大学要有创新精神
- 微信8.0大更新,6大新功能加入!未来还将引入自己的输入法!
- JavaScrip入门-浏览器里的js
- 数据产品通用复合指标查询计算的实践
- ConcurrentLinkedQueue的实现原理和源码分析
- JadClipse反编译工具在Eclipse中的安装
- scala特性_Scala特性示例教程
- java URI 编码解码
- 判断触摸的点在那个 View上
- 数百GitHub私有代码库被黑客清空:不交赎金就公开源码!
- python语言中的模块包括_python中常用的模块的总结
- java重置radiobutton的选项_动态添加试题选项按钮 radioButton(一)
- std::deque的使用
- 2月书讯 | 这本书让无数读者盼了千万遍
- 举个栗子!Tableau 技巧(184):查看固定或自定义时间段的数据
- 一文读懂自然语言处理NLP(图解+学习资料)
- Windows 2000/XP IIS5.1安装
- gpasswd命令简介
- 编码技巧——使用Easypoi导出Excel、多sheet