001-k8s集群的安装
2024-10-21 07:54:18
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
【后续文章】编辑中
最新文章
- Prism 轻量级可扩展代码高亮库.
- 在Hadoop伪分布式模式下安装Hive(derby,mysql)
- UESTC_Dividing Numbers CDOJ 1156
- 二维码开源库ZBar-实现中文解码
- 【itchat】用Python玩耍微信
- java Thread 接口学习
- js error
- Django Models的数据类型汇总
- 在mongoose中使用正则,参数为变量时的写法
- 【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份
- git撤销本地提交但未push的记录
- tp5Auth权限实现
- C#程序集Assembly学习随笔(第一版)_AX
- 一些有用的js插件
- 洛谷P2698 花盆Flowerpot【单调队列】
- asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)
- CodeForces 540C Ice Cave (BFS)
- [转]ASP.NET MVC 5 - 给数据模型添加校验器
- Zynq-Linux移植学习笔记之十-u-boot网络配置
- windows操作系统下载tomcat,并与eclipse进行整合