001-k8s集群的安装
k8s集群的安装
1、实验描述
通过搭建
K8S
的集群,来学习对容器的编排
2、实验环境
【你可能需要】【CentOS 7 搭建模板机】点我快速打开文章
【你可能需要】【VMware 从模板机快速克隆多台】点我快速打开文章
【你可能需要】【CentOS 7 命令行显示优化】点我快速打开文章
【你可看需要】【CentOS 7 配置yum源】点我快速打开文章
虚拟机:
- 系统:CenOS 7.6
- 内存:3-4 G+
- 数量:3台
- 硬盘:50G+
- 要求:纯系统
物理机:Windows 10
3、实验工具
陆续上传中
4、实验步骤
4.1 k8s的架构
除了核心组件,还有一些推荐的
Add-ons
:
组件名称 | 说明 |
---|---|
kube-dns | 负责为整个集群提供DNS服务 |
Ingress Controller | 为服务提供外网入口 |
Heapster | 提供资源监控 |
Dashboard | 提供GUI |
Federation | 提供跨可用区的集群 |
Fluentd-elasticsearch | 提供集群日志采集、存储与查询 |
4.2 修改IP地址、主机和host解析
1. k8s-master
hostnamectl set-hostname k8s-master
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.11#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.11 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11 k8s-master
10.0.0.12 k8s-node-1
10.0.0.13 k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network
2. k8s-node-1
hostnamectl set-hostname k8s-node-1
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.12#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.12 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11 k8s-master
10.0.0.12 k8s-node-1
10.0.0.13 k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network
3. k8s-node-2
hostnamectl set-hostname k8s-node-2
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.13#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.13 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11 k8s-master
10.0.0.12 k8s-node-1
10.0.0.13 k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network
4.3 master 节点安装 etcd
#安装软件
yum install etcd -y &>/dev/null
echo $?
#修改/etc/etcd/etcd.conf配置文件
sed -i \
's#^ETCD_LISTEN_CLIENT_URLS.*#ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"#g' \
/etc/etcd/etcd.conf
sed -i \
's#^ETCD_ADVERTISE_CLIENT_URLS.*#ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"#g' \
/etc/etcd/etcd.conf
cat /etc/etcd/etcd.conf
#启动和自启动
systemctl start etcd.service
systemctl enable etcd.service
#验证结果
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0
etcdctl -C http://10.0.0.11:2379 cluster-health
注意:etcd 原生支持做集群
4.4 master 节点安装 kubernetes
#安装软件
yum install kubernetes-master.x86_64 -y &>/dev/null
echo $?
#修改/etc/kubernetes/apiserver配置文件
sed -i 's#127.0.0.1#0.0.0.0#g' /etc/kubernetes/apiserver
sed -i 's#0.0.0.0:2379#10.0.0.11:2379#g' /etc/kubernetes/apiserver
sed -i '11a KUBE_API_PORT="--port=8080"' /etc/kubernetes/apiserver
sed -i 's#ServiceAccount,##g' /etc/kubernetes/apiserver
cat /etc/kubernetes/apiserver
#修改/etc/kubernetes/config配置文件
sed -i 's#127.0.0.1:8080#10.0.0.11:8080#g' /etc/kubernetes/config
grep 10.0.0.11:8080 /etc/kubernetes/config
#启动和自启动
systemctl enable kube-apiserver.service
systemctl restart kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl restart kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl restart kube-scheduler.service
#验证结果
kubectl get componentstatus
4.5 node 节点安装 kubernetes
#安装软件
yum install kubernetes-node.x86_64 -y &>/dev/null
echo $?
#修改etc/kubernetes/config配置文件
sed -i 's#127.0.0.1:8080#10.0.0.11:8080#g' /etc/kubernetes/config
grep 10.0.0.11:8080 /etc/kubernetes/config
#修改/etc/kubernetes/kubelet配置文件
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
grep 127.0.0.1 /etc/kubernetes/kubelet
sed -i \
's#address=127.0.0.1#address=0.0.0.0#g' \
/etc/kubernetes/kubelet
sed -i \
'8a KUBELET_PORT="--port=10250"' \
/etc/kubernetes/kubelet
sed -i \
"s#override=127.0.0.1#override=$IP#g" \
/etc/kubernetes/kubelet
sed -i \
's#127.0.0.1#10.0.0.11#g' \
/etc/kubernetes/kubelet
cat /etc/kubernetes/kubelet
#启动和自启动
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy.service
systemctl start kube-proxy.service
#在master节点检查
kubectl get nodes
4.6 所有节点配置 flannel 网络
#所有节点
yum install flannel -y &>/dev/null
echo $?
sed -i \
's#127.0.0.1#10.0.0.11#g' \
/etc/sysconfig/flanneld
grep 10.0.0.11 /etc/sysconfig/flanneld
#master节点:
etcdctl mk /atomic.io/network/config '{ "Network": "172.16.0.0/16" }'
yum install docker -y &>/dev/null
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl enable docker
systemctl restart docker
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
#node节点:
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl enable docker
systemctl restart docker
systemctl restart kubelet.service
systemctl restart kube-proxy.service
4.7 配置 master 为镜像仓库
#所有节点
#修改/etc/sysconfig/docker配置文件
sed -i \
"s#^OPTIONS.*#OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.0.11:5000'#g" \
/etc/sysconfig/docker
#查看
sed -n '4p' /etc/sysconfig/docker
#修改bug
sed -i \
'17a ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT' \
/usr/lib/systemd/system/docker.service
#查看
grep FORWARD /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
#master节点
#上传registry压缩包
#导入镜像
docker load -i registry.tar.gz
#启动容器
docker run -d -p 5000:5000 --restart=always --name registry \
-v /opt/myregistry:/var/lib/registry registry
#查看
docker ps
【后续文章】编辑中
001-k8s集群的安装的更多相关文章
- k8s第二回之k8s集群的安装
1. k8s集群的安装 目录 1. k8s集群的安装 1.架构: 2.环境准备 3.master节点安装etcd 4. master节点安装kubernetes 5.node节点安装kubernete ...
- Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14
目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...
- 在k8s集群中安装rook-ceph 1.8版本步骤
官方文档地址:https://rook.io/docs/rook/v1.8/quickstart.html Kubernetes 最小版本号 Kubernetes 最小版本号:Kubernetes v ...
- k8s集群中安装rook-ceph
容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保 ...
- 超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
在2018年年初,Jenkins X首次发布,它由Apache Groovy语言的创建者Jame Strachan创建.Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins ...
- 在k8s集群中安装traefik,并结合kuboard界面使用
安装traefik 参考步骤:https://blog.51cto.com/u_13760351/2764008?xiangguantuijian&01 修改好的四个yaml文件下载地址:ht ...
- 从0到1搭建k8s集群系列1:安装虚拟机及docker
前言 本系列文章记录了本人学习k8s集群搭建的过程,从k8s基本组件的安装.到部署mysql服务到k8s集群.部署web项目到k8s集群以及安装可视化界面管理工具kuboard. 因为k8s的组件安装 ...
- 菜鸟系列k8s——快速部署k8s集群
快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...
- 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理
目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...
随机推荐
- node exporter
在prometheus中负责数据汇报的程序统一叫做exporter; 负责主机信息收集的node_exporter 可以利用prometheus的static_configs来拉取node_expor ...
- [C2P1] Andrew Ng - Machine Learning
About this Course Machine learning is the science of getting computers to act without being explicit ...
- Vue中的父组件给子组件传值
父子组件传值: 父组件在调用子组件的地方,添加一个自定义的属性,属性的值就是你要传递给子组件的数据,如果值是一个变量,那么需要使用到绑定属性: 在子组件定义的地方,添加一个props选项,值为一个数组 ...
- 线程让步yield
一.yield()的作用 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其 ...
- appium--使用PyYAML封装Capability
前戏 YAML 语言的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下. YAML大小写敏感: 使用缩进代表层级关系: 缩进只能使用空格,不能使用TAB,不要求空 ...
- FFmpeg 常用API
一.通用API 1.1 av_register_all() 初始化 libavformat 和注册所有的复用器.解复用器和协议处理器.如果不调用这个函数,可以调用下面的三个函数来选择支持的格式. 注册 ...
- Debug 路漫漫-15:Python: NameError:name 'dataset' is not defined
在调试 <Outer Product-based Neural Collaborative Filtering>论文的源码(https://github.com/duxy-me/ConvN ...
- TensofFlow函数: tf.image.crop_and_resize
tf.image.crop_and_resize( image, boxes, box_ind, crop_size, method='bilinear', extrapolation_value=0 ...
- Vue.js 源码分析(十五) 指令篇 v-bind指令详解
指令是Vue.js模板中最常用的一项功能,它带有前缀v-,比如上面说的v-if.v-html.v-pre等.指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上,先介绍v-bind指 ...
- vue数据更改视图不更新问题----深入响应式原理
Vue响应式原理之官方解释 当你把一个普通的JavaScript对象传给Vue实例的data选项,Vue将遍历此对象所有的属性,并使用Object.defineProperty把这些属性全部转为get ...