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 ...
随机推荐
- Jmeter(二)响应内容乱码解决办法
Jmeter请求编码设置为UTF-8,响应内容依然乱码,可在Jmeter安装路径bin\jmeter.properties中设置默认编码为UTF-8,于是问题得以解决:
- linux-部署2
gunicorn+supervisor 1.gunicorn 安装: pip3 install gunicorn 配置: 两种方式:命令和文件,因为配置项比较多,所以放在文件里,启动时指明配置文件即可 ...
- @Component, @Service, @Controller, @Repository区别
@Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理 @Componen ...
- MySQL实战45讲学习笔记:第四十讲
一.本节概述 在上一篇文章中,我提到 MySQL 对自增主键锁做了优化,尽量在申请到自增 id 以后,就释放自增锁. 因此,insert 语句是一个很轻量的操作.不过,这个结论对于“普通的 inser ...
- QDialog 设置成圆角
void paintEvent(QPaintEvent *event) { Q_UNUSED(event); QBitmap bmp(this->size()); bmp.fill(); QPa ...
- [算法模版]子序列DP
[算法模版]子序列DP 如何求本质不同子序列个数? 朴素DP 复杂度为\(O(nq)\).其中\(q\)为字符集大小. \(dp[i]\)代表以第\(i\)个数结尾的本质不同子序列个数.注意,这里对于 ...
- mybatis错误:There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy某某'
错误描述: There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy32' 错误原因: 1.你有多 ...
- make 安装
wget https://kojipkgs.fedoraproject.org//packages/make/4.2.1/14.fc31/src/make-4.2.1-14.fc31.src.rpm ...
- Netty中的ChannelFuture和ChannelPromise
在Netty使用ChannelFuture和ChannelPromise进行异步操作的处理 这是官方给出的ChannelFutur描述 * | Completed successfully | * + ...
- 部署 asp.net 网站到 Azure
部署asp.net网站到Azure 前言 前些天一直在写一个单页面web应用程序,终于完成了,于是考虑发布到云服务器.本人没有AWS账号,遂本打算使用谷歌云.参考文档后发现官方文档给出的方式为在vis ...