Kubernetes集群部署

一.Kubernetes简介

(一)在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用
(二)Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训
(三)Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户
(四)Kubernetes的好处:
1.隐藏资源管理和错误处理,用户仅需要关注应用的开发
2.服务高可用、高可靠
3.可将负载运行在由成千上万的机器联合而成的集群中

二.kubernetes设计架构

(一)Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统
在这里插入图片描述
(二)Kubernetes主要由以下几个核心组件组成
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:提供集群日志采集、存储与查询
(四)Kubernetes设计理念和功能其实就是一个类似Linux的分层架构
在这里插入图片描述
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

三.Kubernetes部署

关闭节点的selinux和iptables防火墙
所有节点部署docker引擎
server2 3 4
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system

cd /etc/systemd/system/docker.service.d  #因为之前部署的machine,有冲突
rm -f *
yum remove docker-ce -y
yum install docker-ce -y
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://reg.westos.org"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]

}
systemctl daemon-reload
systemctl enable --now docker
docker info

在这里插入图片描述
官网

server2 3 4
swapoff -a  #禁用swap分区
vim /etc/fstab  #注释掉/etc/fstab文件中的swap定义
vim /etc/yum.repos.d/k8s.repo  #安装部署软件kubeadm
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
yum install kubelet kubeadm kubectl -y
systemctl enable --now kubelet
scp /etc/yum.repos.d/k8s.repo server3:/etc/yum.repos.d/  #还有4

server2
kubeadm config print init-defaults	#查看默认配置信息
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers  #列出所需镜像;默认从k8s.gcr.io上下载组件镜像,需要翻墙才可以,所以需要修改镜像仓库
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers  #拉取镜像

在这里插入图片描述

在这里插入图片描述

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers  #初始化集群;--pod-network-cidr=10.244.0.0/16使用flannel网络组件时必须添加 --kubernetes-version指定k8s安装版本;注意cpu2个,内存2048M
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl get node
kubectl get ns  #命名空间
kubectl get cs
echo "source <(kubectl completion bash)" >> ~/.bashrc  #tab补齐,需退出重新登陆

配置kubectl;此处做实验用的是超户,此次不需要
useradd kubeadm
vim /etc/sudoers
kubeadm  ALL=(ALL)       NOPASSWD: ALL

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他网络组件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  #外网上的.需要翻墙
get kube-flannel.yml
kubectl apply -f kube-flannel.yml  #安装flannel网络组件
kubectl get pod --namespace kube-system

在这里插入图片描述

server2
docker save quay.io/coreos/flannel:v0.12.0-amd64 registry.aliyuncs.com/google_containers/pause:3.2 registry.aliyuncs.com/google_containers/coredns:1.7.0 registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2 > node.tar

server3 4
docker load -i node.tar
kubeadm join 172.25.2.2:6443 --token n8wssz.mpmtxt1s6g0ss4w4 \
--discovery-token-ca-cert-hash sha256:2c7c5ed8cdc0e47121a316ccf2f8ec3470683ee0fc65a9521fe04dca92fd7783  #节点扩容

server2  #Master查看状态
kubectl get cs
kubectl get nodes
kubectl get pod -n kube-system

kubectl命令指南
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值