k8s(kubernetes)集群

内容介绍

  • k8s的概念和架构
  • 从零搭建k8s集群
    • 基于客户端工具kubeadm搭建
    • 基于二进制包方式找寻 (更好地理解架构)
  • k8s 核心概念
    • Pod 使用 存在意义 实现技术
    • controller
    • Service
    • RBAC 安全控制模型
    • Helm
  • 搭建集群监控平台系统
  • 搭建高可用k8s集群
  • 在集群环境部署项目 打包 镜像 完整暴露端口

k8s的概念

全名:kubernetes

概述:

k8s是谷歌在2014年开源的容器化集群管理系统
使用k8s进行容器化应用部署
使用k8s利于应用扩展
k8s目标实施让部署容器化应用更加简洁和高效
容器化带环境安装
docker 能做到,多数是单机版,集群不是很方便
k8s 可以解决docker中不方便的地方
擅长自动化部署、大规模

特性:

自动装箱
自我修复(自愈能力)
水平扩展
服务发现
滚动更新
版本回退
密钥和配置管理
存储编排
批处理

架构:

Master node 主控节点

  • apiserver 集群统一入口,以restful方式,交易etcd存储
  • sheduler 节点调度,选择node节点应用部署
  • controller-manager 集中中常规的后台任务,一个资源对应一个控制器
  • etcd 存储,用于保存集群里面相关的数据

Work node 工作节点

  • kubelet master派到node节点的代表,管理本机容器
  • kube-proxy 提供网络代理,负载均衡等操作。

Work node 工作节点

核心概念:

pod k8s中最小的部署单元, 是一组容器的集合 一个pod组中的容器是共享网络的,生命周期是短暂的
controller

  • 确保预期副本数量
  • 无状态应用部署
  • 有状态应用部署
  • 确保所有node 运行同一个 pod
  • 一次性任务和定时任务
    service
  • 定义一组pod的访问规则

k8s搭建

k8s平台规划

单master集群

多master集群

k8s硬件配置要求

测试环境
系统:centos-7.0 版本 禁用swap
master: 双核 内存4G 硬盘 20G
node:4核 同存8G 硬盘 40G
生产环境
master: 8核 内存16G 硬盘 100G
node:16核 内存64G 硬盘 500G

系统初始化操作

systemctl stop firewalld
systemctl disable firewalld
setenforce 0 
sed -i 's@enforcing@disabled@' /etc/selinux/config
swapoff -a

sed -ri 's@.*swap@#&@' /etc/fstab 

hostnamectl set-hostname <hostname>

# 只在master点上面添加  
cat > /etc/hosts  << EOF
192.168.8.11 master
192.168.8.21 node1
192.168.8.22 node2

EOF

# 将桥接的ipv4流量传到iptable 链
 cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

EOF

sysctl --system

yum -y install ntpdate
ntpdate time.windows.com 

k8s部署方式

kubeadm 部署工具
快速 ,应用广泛

步骤:

  1. 安装3台虚拟机,centos 7
  2. 系统初始化,参考上面
  3. 安装dockter
# 安装docker 
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum makecache
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker
systemctl start docker

安装 kubectl kubeadm kubelet

cat > /etc/yum.repos.d/kubernetes.repo <<
EOF
[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

EOF

yum -y install  kubectl-1.18.0-0 kubeadm-1.18.0-0 kubelet-1.18.0

# 在master 节点初始化
 kubeadm init --apiserver-advertise-address=192.168.8.11 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16


# 在node 节点安装插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml   # 可以将文件下载到本地,然后再执行 
# 创建 pod
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看pod 及端口
kubectl get pod,svc

1.创建一个Master节点,kubeadm init
2.将Node节点加入到当前集群中 kubeadm join <Master 节点的IP和端口>

二进制包方式
部署麻烦 ,更好学习,便于后期维护

一主一备 
1. 安装操作系统 ,初始化 
2. 系统初始化,参考上一步
3. 为etcd 和api-server 自签证书   #准备使用cfssl证书进行签发,是使用json文件生成证书,相比openssl 更方便使用 
4. 部署etcd集群 



server-csr.json


ca-config.json

ca-csr.json

5. 部署master组件   apiserver controll-manager schedule etcd  docker 
6. 部署node组件  kubelet kube-proxy docker etcd 
7. 部署集群网络插件 
8. 

posted @ 2023-01-11 10:06  lifei888  阅读(1620)  评论(0编辑  收藏  举报