企业运维实战--k8s学习笔记1.Kubernetes简介、k8s集群安装和部署

企业运维实战--k8s学习笔记1.Kubernetes简介、k8s安装和集群部署


前言–Kubernetes简介

Kubernetes是一个基于容器技术的分布式架构领先方案。
继docker作为容器引擎之后,k8s横空出世。 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,故障自愈,都非常的方便。

Kubernetes的好处:

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
  • 服务高可用、高可靠。
  • 可将负载运行在由成千上万的机器联合而成的集群中。

Kubernetes的核心组件:

核心组件名称含义
master集群的"大脑",集群控制节点,负责整个集群的管理和控制,基本上接收Kubernetes的所有控制命令,master负责具体的执行过程
node工作负载节点,负责“干活的”,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他Node节点上。
etcd保存了整个集群的状态
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现 等机制
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI)
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡

推荐组件Add-ons:

组件含义
kube-dns负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Heapster提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
Fluentd-elasticsearch提供集群日志采集、存储与查询

大致工作原理图:
在这里插入图片描述

k8s集群安装及部署

安装环境:四台rhel7.6版本虚拟机,火墙和selinux关闭。
其中,server1负责harbor容器仓库配置,server2负责k8s master节点,server3为k8s node节点,所有k8s服务器均要能上网。

step1:docker引擎配置

要求所有节点必须配置docker-ce服务,且连接到server1的harbor仓库,可参考本人博客:
企业运维实战–最全Docker学习笔记1.Docker简介、安装部署、镜像构建、Dockerfile详解、镜像构建、镜像优化、本地私有仓库搭建

企业运维实战–最全Docker学习笔记2.本地容器仓库加密认证、harbor远程容器仓库搭建

配置好docker后,所有k8s禁用swap分区,注释掉/etc/fstab分区的定义

swapoff -a

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设定docker cgroup driver:systemd
在这里插入图片描述
设定完成后重启 docker服务,docker info查看
在这里插入图片描述
在这里插入图片描述

上述操作server2、3、4中均需要操作。

step2:k8s安装和部署

编写k8s安装软件仓库文件,

cd /etc/yum.repos.d/
vim k8s.repo
cat k8s.repo

在这里插入图片描述

检验仓库文件是否书写有误

yum repolist

在这里插入图片描述

查看服务版本

yum list kubeadm

在这里插入图片描述

安装服务

yum install -y kubelet kubeadm kubectl

在这里插入图片描述

设置服务开机自启

systemctl enable --now kubelet.service

在这里插入图片描述
配置server2到server3、4的免密登陆,方便传输文件(非必要操作)
将软件仓库文件传给server3、4

ssh-keygen
ssh-copy-id server3
ssh-copy-id server4
scp k8s.repo server3:/etc/yum.repos.d/
scp k8s.repo server4:/etc/yum.repos.d/

server3、4同样安装与server2同样的服务并设置开机自启。
在这里插入图片描述
在这里插入图片描述

列出所需镜像

kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

在这里插入图片描述

拉取镜像

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

在这里插入图片描述

报错,错误原因没有coredns:v1.8.0的镜像源。
解决方法:在docker中pull,然后将所有镜像push到harbor容器仓库中,在进行k8s初始化。

server1:

docker pull coredns/coredns:1.8.0

在这里插入图片描述
harbor创建k8s项目,并公开项目。
在这里插入图片描述
将coredns:1.8.0 push到harbor仓库中,打标签时需要将新的镜像命名为coredns:v1.8.0

server2中
批量对所有镜像打标签,准备push到harbor中

docker images |grep ^registry.aliyuncs.com | awk '{print $1":"$2}' | awk -F/ '{system("docker tag "$0" hyl.westos.org/k8s/"$3"")}'

在这里插入图片描述

查看打标签之后的镜像

docker images | grep ^hyl.westos.org | awk '{print $1":"$2}'

将镜像批量push到harbor仓库中

docker images | grep ^hyl.westos.org/k8s | awk '{system("docker push "$1":"$2"")}'

在这里插入图片描述
在这里插入图片描述

初始化k8s集群

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository hyl.westos.org/k8s

在这里插入图片描述
初始化后,提示操作,此处的操作需要复制粘贴保存起来,方便后续使用。
这里我们时root用户,所以选择按照提示配置环境变量。

export KUBECONFIG=/etc/kubernetes/admin.conf
vim .bash_profile
cat .bash_profile

在这里插入图片描述

echo "source <(kubectl completion bash)" >> ~/.bashrc

在这里插入图片描述
配置好环境变量后注销登陆,命令行输入kubectl 然后tab,出现如下情况则证明配置已完成。
在这里插入图片描述
在这里插入图片描述
查看节点,发现有两个节点未启动
在这里插入图片描述

使用用flannel网络组件完善集群

将镜像压入harbor仓库
在这里插入图片描述
在这里插入图片描述

vim kube-flannel.yml 修改image路径为仓库路径
在这里插入图片描述
启动组件

kubectl apply  -f kube-flannel.yml

在这里插入图片描述

再次查看节点情况,所有节点均running

kubectl get pod -n kube-system

在这里插入图片描述

server3、4:
将本机添加到部署好的server2集群中,此处命令为之前保存的初始化命令。

> kubeadm join 172.25.9.2:6443 --token 4sdwux.vxlnp9t2te6064hg \
--discovery-token-ca-cert-hash sha256:3f501d3b4ac8ee9e991c3221cac911932ecf877cf2ef125413229c2c7c508b59

在这里插入图片描述
在这里插入图片描述

查看节点

kubectl get pod -n kube-system

在这里插入图片描述
k8s添加节点成功,k8s集群部署成功。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值