手把手教你搭建Kubernetes集群

文章内容输出来源:拉勾教育Java高薪训练营

一、初识拉勾教育

最开始并不知道拉勾有教育模块的业务,一直都以为只有招聘。直到今年5月份的时候拉勾的小姐姐打电话给我说他们有一个训练营问我是否有兴趣,那个时候刚好处于技术的瓶颈期,对于技术感觉怎么都上不去。于是就听了拉勾小姐姐的介绍(拉勾教育Java工程师高薪训练营课程),主要介绍从以下几个方面讲解:

拉勾为什么做教育培训

拉勾主营业务是招聘,在长期的招聘过程中积累了大量的企业对人才的需求和人才的自身能力数据信息。同时也根据企业对人才的需求推荐合适的候选人。但是符合企业要求的高端人才比较稀缺,而拉勾又掌握了企业的需求。所以拉勾本着为企业培养候选人的愿景开启教育培训业务,主要目的是通过系统培训为企业输送符合的高质量人才。

高薪训练营课程大纲介绍

Java高薪训练营是拉勾教育历经十几个月时间精心打磨才确定推出的课程。课程设计是对标阿里P7技术要求,针对专项提升技术能力。课程知识体系覆盖全面,详细规划层层递进提升技术能力,涵盖了99%的企业对技术的要求。课程内容分阶段,从12个阶段全面提升架构能力。内容涵盖主流源码剖析、微服务、分布式中间件(缓存、MQ等)、海量数据存储、容器虚拟化技术、底层调优与算法等。讲师团队都是由一线多年经验的资深技术专家讲解,更加贴近实际开发应用。课程学习模式介绍
线上学习直播+录播,课程阶段学习闯关式。只有前面的阶段学完提交作业老师批改及格才解锁下一个模块。学习成果测验,每个模块的知识学完都有测验可以检验自己的学习成果。大的模块学完有专门设计的作业进行实操。导师在线实时解答疑惑,进行作业思路指导与批改。班主任在线监督学习情况。

二、反复斟酌后的选择

听完了训练营的课程介绍后,还是比较激动因为课程内容很符合自己目前的情况,但是依然很淡定因为我要反复对比课程内容选择最好的才可以。后面的2-3天对比了其他平台课程发现内容都没有拉勾教育的系统和全面,最终在课程报名截止的前几天缴费参与了课程。

做出这个决定比较难,因为学费不便宜(大家一定这样觉得)。但是这个费用和以后的职业提升发展做对比,我还是觉得可以承受的。毕竟未来还很长,而且学习一周不满意可以全额退款。如果觉得学的不够好还可以免费读一次,那么就可以学习一年。

三、学习过程亲身感受

目前截止已经认真学习了4个月的拉勾教育Java高薪训练营课程,课程的质量我是非常认可的。我看过很多平台的机构直播课程,但是感觉讲解的知识并没有那么容易吸收。但是拉勾教育的子幕和应颠老师讲解从浅到深,前面学习的内容是为了给后面的内容做铺垫。层层递进的教学方式让我能够很好的吸收知识。并且对于每个模块的知识点都能够讲的很透彻。而且对于源码剖析过程源代码都有非常详细的注释,老师会给有注释的源代码,这样自己学习起来也没有那么吃力。

以前都是自己学习,整体学下来回感觉到很痛苦。比较技术的道路不太好走,没有人带领也不知道应该如何做,整体的知识体系会比较乱、还会松懈。在加入了拉勾的训练营后,每天都要学习2-3个小时,跟着老师的脚步慢慢学。松懈的时候看到与别人的进度有差距,这个时候不服输的心理就诞生了,促使这我继续坚持学习下去。

下面是我学习K8S容器章节后整理的笔记

K8S 集群安装部署文档

一:准备条件:

  1. 使用Centos7.6以上的 操作系统

  2. 集群服务器设定如下:

    主机IP主机名
    10.150.201.17k8s-master01
    10.150.201.2k8s-node01
    10.150.201.224k8s-node02
    10.150.201.231k8s-node03
  3. 打通外网访问条件

二:Kubernetes安装与配置

2.1硬件安装要求:
2.1.1 CPU 2核以上 内存 3g以上 硬盘 50g以上
2.1.2 查看centos系统版本命令:
cat /etc/centos-release

本例使用使用centos7.9 操作系统

2.1.3配置阿里云yum源
 1.下载安装wget
  yum install -y wget
 2.备份默认的yum
 mv /etc/yum.repos.d /etc/yum.repos.d.backup
 3.设置新的yum目录
 mkdir -p /etc/yum.repos.d
 4.下载阿里yum配置到该目录中,选择对应版本
 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 5.下载epel源
 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel7.repo

修改yum.conf,注释exclude=kernel和exclude=centos-release,否则无法升级Centos系统的版本

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
#exclude=kernel*
#exclude=centos-release*
2.1.4升级系统内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
grep initrd16 /boot/grub2/grub.cfg
grub2-set-default 0
#重启系统
reboot
2.1.5查看centos系统内核命令:
uname -r
uname -a
2.1.6查看CPU命令:
lscpu
2.1.7查看内存命令:
free
free -h
2.1.8查看硬盘信息
fdisk -l
2.2centos7系统配置:
2.2.1关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.2.2关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
2.2.3网桥过滤
vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0
生效命令
sysctl --system
查看效果
sysctl -a|grep "ip_forward"
2.2.4开启IPVS
安装IPVS
yum -y install ipset ipvsdm
编译ipvs.modules文件
vi /etc/sysconfig/modules/ipvs.modules
文件内容如下
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
赋予权限并执行
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
/etc/sysconfig/modules/ipvs.modules &&lsmod | grep -e ip_vs -e
nf_conntrack
重启电脑,检查是否生效
reboot
lsmod | grep ip_vs_rr

注意:当内核版本高于4.9时,nf_conntrack_ipv4 要改为nf_conntrack

2.2.5同步时间
安装软件
yum -y install ntpdate
向阿里云服务器同步时间
ntpdate time1.aliyun.com
查看时间
date -R || date
2.2.6命令补全
安装bash-completion
yum -y install bash-completion bash-completion-extras
使用bash-completion
source /etc/profile.d/bash_completion.sh
2.2.7关闭swap分区
临时关闭:
swapoff -a
永久关闭:
vi /etc/fstab
将文件中的/dev/mapper/centos-swap这行代码注释掉
#/dev/mapper/centos-swap swap swap defaults 0 0
确认swap已经关闭:若swap行都显示 0 则表示关闭成功
free -m
2.2.8hosts配置
vi /etc/hosts

10.150.201.17 k8s-master01
10.150.201.2 k8s-node01
10.150.201.224 k8s-node02
10.150.201.231 k8s-node03
2.3安装docker
2.3.1安装docker前置条件
yum install -y yum-utils device-mapper-persistent-data lvm2
2.3.2添加源
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

vi /etc/yum.repos.d/docker-ce.repo
# 按ecs进行非编辑模式
:%s/https:\/\/download.docker.com/https:\/\/mirrors.aliyun.com\/docker-ce/g
yum makecache fast
2.3.3查看docker更新版本
yum list docker-ce --showduplicates | sort -r
2.3.4安装docker最新版本
安装指定版本:
yum -y install docker-ce-18.09.8
可以通过docker version命令查看
docker-client版本:当前最新版本
docker-server版本为:18.09.8
2.3.5开启dock而服务
systemctl start docker
systemctl status docker
2.3.6安装阿里云镜像加速器以及修改Cgroup Driver
mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
        "registry-mirrors": [
                "https://trqcg3pj.mirror.aliyuncs.com",
                "http://hub-mirror.c.163.com"
        ],
        "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl restart docker
查看修改后状态:
docker info | grep Cgroup
2.3.7设置docker开启启动服务
systemctl enable docker
2.4安装kubernates
2.4.1新建repo文件
vi /etc/yum.repos.d/kubernates.repo
2.4.2文件内容
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
2.4.3更新缓存
yum clean all
yum -y makecache
2.4.4验证源是否可用
yum list | grep kubeadm
如果提示要验证yum-key.gpg是否可用,输入y。
查找到kubeadm。显示版本
2.4.5查看k8s版本
yum list kubelet --showduplicates | sort -r
2.4.6安装k8s-1.17.5
yum install -y kubelet-1.17.5 kubeadm-1.17.5 kubectl-1.17.5
2.5设置kubelet
2.5.1增加配置信息
如果不配置kubelet,可能会导致K8S集群无法启动。为实现docker使用的cgroupdriver与kubelet
使用的cgroup的一致性。
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
2.5.2设置开机启动
systemctl enable kubelet
2.6导入镜像
2.6.1导入master节点和node节点都需要导入

在可以科学上网的机器上拉取所需要的镜像,然后导出 k8s.1.17.5.tar

docker save -o k8s.1.17.5.tar k8s.gcr.io/kube-proxy:v1.17.5 k8s.gcr.io/kube-apiserver:v1.17.5 k8s.gcr.io/kube-controller-manager:v1.17.5 k8s.gcr.io/kube-scheduler:v1.17.5 k8s.gcr.io/coredns:1.6.5 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/pause:3.1
docker save -o calico.3.14.2.tar calico/cni:v3.14.2 calico/pod2daemon-flexvol:v3.14.2 calico/node:v3.14.2 calico/kube-controllers:v3.14.2

接着将 k8s.1.17.5.tar 导入到集群所有的服务器

docker load -i k8s.1.17.5.tar
2.7初始化集群
2.7.1配置k8s集群网络
docker load -i calico.3.14.2.tar

配置hostname:
hostnamectl set-hostname k8s-master01
其他子节点按host名称依依对应 如10.150.201.2:
hostnamectl set-hostname k8s-node01
2.7.2初始化集群信息:calico网络
kubeadm init --apiserver-advertise-address=10.150.201.17 --kubernetes-version v1.17.5 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.81.0.0/16

执行上述命令成功后注意保留 最后成功后的信息!这条信息为node节点加入master 集群信息的命令

2.7.3执行配置命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.7.4node节点加入集群信息
依据master节点执行初始化成功的信息 !(不能照抄)
kubeadm join 10.150.201.17:6443 --token 15bh7o.065xrrnlhs66fy6n \
    --discovery-token-ca-cert-hash sha256:04c7c4597fbebccde91f24f1065937c9994a6f0b9119a29ddc7800b846a1c720
2.7.5 在master节点查看集群信息
get nodes -o wide

此时可以看到节点信息,但都处于unready状态

2.7.6 通过calico初始化网络
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml

kubectl apply -f ./calico.yaml

#最后查看节点状态
get nodes -o wide
2.8安装 Kubernetes Dashboard
2.8.1下载配置文件
#官方网站
https://github.com/kubernetes/dashboard 
#下载配置文件 
wget https://github.com/kubernetes/dashboard/blob/v2.0.3/aio/deploy/recommended.yaml
2.8.2修改配置文件
179行左右 
containers: 
	- name: kubernetes-dashboard 
	  image: kubernetesui/dashboard:v2.0.0-rc7
	  imagePullPolicy: IfNotPresent 
262行左右。新增下载策略 
containers: 
	- name: dashboard-metrics-scraper 
	  image: kubernetesui/metrics-scraper:v1.0.4 
	  imagePullPolicy: IfNotPresent

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部访问。找到Services配置。在配置文件上边。增加type:NodePort和 nodePort:30100端口

kind: Service 
apiVersion: v1 
metadata: 
	labels: 
		k8s-app: kubernetes-dashboard 
	name: kubernetes-dashboard 
	namespace: kubernetes-dashboard 
	spec: ports: 
		- port: 443 
		  targetPort: 8443 
		  nodePort: 30100 
		type: NodePort 
		selector: 
			k8s-app: kubernetes-dashboard

在配置文件最下边增加用户及给用户授予集群管理员角色

--- 
apiVersion: v1 
kind: ServiceAccount 
metadata: 
	labels: 
		k8s-app: kubernetes-dashboard 
	name: dashboard-admin 
	namespace: kubernetes-dashboard 
--- 
apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRoleBinding 
metadata: 
	name: dashboard-admin-cluster-role 
roleRef: 
	apiGroup: rbac.authorization.k8s.io 
	kind: ClusterRole 
	name: cluster-admin 
subjects: 
	- kind: ServiceAccount
2.8.3在Master(包含apiService)的节点上部署dashboard
kubectl apply -f ./recommended.yaml

kubectl get pods -n kubernetes-dashboard -o wide 

kubectl get svc -n kubernetes-dashboard
2.8.4获取登录token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes- dashboard get secret | grep dashboard-admin | awk '{print $1}')

或者

1.根据命名空间找到我们创建的用户 
kubectl get sa -n kubernetes-dashboard 
2.查看我们创建用户的详细信息。找到token属性对应的secret值 
kubectl describe sa dashboard-admin -n kubernetes-dashboard 
kubectl describe secrets dashboard-admin-token-9pl4b -n kubernetes-dashboard 
3.或者是根据命名空间查找secrets。获得dashboard-admin用户的secret。 
kubectl get secrets -n kubernetes-dashboard kubectl describe secrets dashboard-admin-token-9pl4b -n kubernetes-dashboard
2.8.5浏览器访问
注意:是https方式访问 
https://10.150.201.17:30100/

在这里插入图片描述
输入token访问,登录 Dashboard
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值