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 ...
随机推荐
- is ==的区别 编码和解码
1.n=0 n1=0 print(n==n1) ==>true == 是比较两边的值 2.a="alex " b="alex" print(a==b)= ...
- SpringBoot(十八)_springboot打成war包部署
最近在做项目的时候,由于使用的是springboot,需要打成war包.我就按照正常的思路去打包,结果部署后无法访问,一直报错404.后续问了问 公司同事,他给解决了.说大部分都是这个原因. 如果需要 ...
- 这几款我私藏的Markdown编辑器,今天分享给你
相信很多人都使用 Markdown 来编写文章,Markdown 语法简洁,使用起来很是方便,而且各大平台几乎都已支持 Markdown 语法 那么,如何选择一款趁手的 Markdown 编辑器,就是 ...
- System.gc()和Runtime.gc()的区别?
java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,两者的行为没有任何不同 System.gc()和runtime.gc()用于 ...
- 支付宝AopSdk在dotnet core下的实现
随着项目都迁移到了dotnet core下,阿里的支付宝也需要随着项目迁移.之前在.Net Framework下用到了阿里提供的AopSdk和F2FPay两个程序集,支付宝官方提供的只支持Framew ...
- 微服务 SpringCloud + docker
最近看到微服务很火,也是未来的趋势,所以就去学习下 好,接下来我们来认识下spring cloud.一.什么是spring cloud?它的中文官网这样说: 微服务架构集大成者,云计算最佳业务实践. ...
- idea修改svn地址
1.不能直接修改idea中的svn路径 2.需要先修改小乌龟地址,先找到本地的项目文件右键
- git使用cherry-pick和revert抢救错误代码提交
大多数的新手在新接触git时都会出现这样的问题.代码写完了,提交到dev分支进行测试.一高兴忘记切回来,继续在dev分支开发,写完之后提交时猛的发现,我靠,我怎么在dev上面写代码,此时内心必然是一阵 ...
- mysql 8.0 group by 不对的问题
select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
- 解决前后端调用,跨域二次请求Access-Control-Max-Age
发现前后端分离的项目中,前端发起一个请求到后端,在Chrome浏览器下面debug的时候,Network下面看到同一个url有两条请求,url有两条请求,第一条请求的Method为OPTIONS,第二 ...