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

【后续文章】编辑中

最新文章

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

热门文章

  1. fiddler---Fiddler抓取https协议
  2. 【bzoj4559】[JLoi2016]成绩比较(dp+拉格朗日插值)
  3. 4. Go语言—值类型和引用类型
  4. 小程序的flex布局
  5. 简述ECMAScript6新增特性
  6. P2186 小Z的函数栈
  7. kafka_2.12-2.2.1 集群搭建
  8. VBA实战 - 一个简单的 httplib
  9. win10 x64 VS2017 PJSIP 视频通话编译流程
  10. 【Linux命令】Linux压缩及解压命令