【云原生·k8s】k8s集群安装部署

心已赠人 2024-03-31 15:46 182阅读 0赞

带着理论,再去部署,验证你的理论

文章目录

    • 1、环境准备
    • 2、环境初始化
    • 3、防火墙初始化
    • 3、关闭swap
    • 4、yum源配置
    • 5、ntp配置
    • 6、修改linux内核参数,开启数据包转发功能
    • 7、安装docker基础环境()
    • 8、安装k8s的初始化工具kubeadm命令(所有节点执行)
    • 9、初始化k8s-master主节点(只在主节点执行)

1、环境准备

  • 准备3台机器,注意配置,别太低,否则跑不起来。
  • 系统初始化配置,如ntp等

    主机名、节点ip、部署组件

    k8s kubeadm 一键自动化,安装k8s集群,安装所有运行需要的组件

    k8s-master 10.0.0.10 etcd, kube-apiserver, kube-controller-manager, kubectl, kubeadm, kubelet, kube-proxy, flannel

  1. k8s-node1 10.0.0.11 kubectl, kubelet, kube-proxy, flannel,docker
  2. k8s-node2 10.0.0.12 kubectl, kubelet, kube-proxy, flannel,docker
  3. 确保三台机器,的跨节点的容器互相通信,装网络插件flannel

2、环境初始化

  1. cat >>/etc/hosts <<'EOF'
  2. 10.0.0.10 k8s-master-10
  3. 10.0.0.11 k8s-node-11
  4. 10.0.0.12 k8s-node-12
  5. EOF
  6. ping -c 2 k8s-master-10
  7. ping -c 2 k8s-node-11
  8. ping -c 2 k8s-node-12

3、防火墙初始化

  1. systemctl stop firewalld NetworkManager
  2. systemctl disable firewalld NetworkManager
  3. sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
  4. setenforce 0
  5. systemctl disable firewalld && systemctl stop firewalld
  6. getenforce 0
  7. iptables -F
  8. iptables -X
  9. iptables -Z
  10. iptables -P FORWARD ACCEPT

3、关闭swap

k8s默认禁用swap功能

  1. swapoff -a
  2. # 防止开机自动挂载 swap 分区
  3. sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

4、yum源配置

  1. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  2. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  3. sed -i '/aliyuncs/d' /etc/yum.repos.d/*.repo
  4. yum clean all && yum makecache fast

5、ntp配置

  1. yum install chrony -y
  2. systemctl start chronyd
  3. systemctl enable chronyd
  4. date
  5. # 修改配置文件,加入ntp.aliyun.com上游地址即可
  6. ntpdate -u ntp.aliyun.com
  7. hwclock -w

6、修改linux内核参数,开启数据包转发功能

  1. # 容器夸主机通通信,底层是走的iptables,内核级别的数据包转发
  2. cat <<EOF > /etc/sysctl.d/k8s.conf
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. net.ipv4.ip_forward=1
  6. vm.max_map_count=262144
  7. EOF
  8. modprobe br_netfilter
  9. # 加载读取内核参数配置文件
  10. sysctl -p /etc/sysctl.d/k8s.conf

7、安装docker基础环境()

  1. yum remove docker docker-common docker-selinux docker-engine -y
  2. curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. yum makecache fast
  4. yum list docker-ce --showduplicates
  5. yum install docker-ce-19.03.15 docker-ce-cli-19.03.15 -y
  6. #配置docker加速器、以及crgoup驱动,改为k8s官方推荐的systemd,否则初始化时会有报错。
  7. mkdir -p /etc/docker
  8. cat > /etc/docker/daemon.json <<'EOF'
  9. {
  10. "registry-mirrors" : [
  11. "https://ms9glx6x.mirror.aliyuncs.com"],
  12. "exec-opts":["native.cgroupdriver=systemd"]
  13. }
  14. EOF
  15. #启动
  16. systemctl start docker && systemctl enable docker
  17. docker version

8、安装k8s的初始化工具kubeadm命令(所有节点执行)

  1. # 安装k8s集群环境初始化的工具
  2. # kubelet-1.19.3 , # 组件,增删改查pod再具体机器上,pod可以运行主节点上,node节点上
  3. # kubeadm-1.19.3 # k8s版本 1.19.3 ,自动拉去k8s基础组件镜像的一个工具
  4. # kubectl-1.19.3 # 管理,维护k8s客户端换,和服务端交互的一个命令行工具

所有机器执行

  1. [root@k8s-master-10 ~]#cat init-k8s.sh
  2. #设置阿里云源
  3. curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  4. curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  6. [kubernetes]
  7. name=Kubernetes
  8. baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  9. enabled=1
  10. gpgcheck=0
  11. repo_gpgcheck=0
  12. gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
  13. http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  14. EOF
  15. yum clean all && yum makecache
  16. #yum list kubeadm --showduplicates 列出,这个阿里云k8s源,提供了哪些k8s版本让你玩
  17. # 安装指定版本 kubeadm-1.19.3 ,安装的kubeadm版本,就是决定了,拉去什么版本的k8s集群版本的镜像
  18. yum install kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3 ipvsadm -y

k8s安装完毕之后,设置所有节点的kubelet开机运行

为何要让kublet,docker,开机启动

在这里插入图片描述

  1. ## 查看kubeadm 版本,初始化的k8s版本信息,就是 v1.19.3版本
  2. $ kubeadm version
  3. [root@k8s-master-10 ~]#kubeadm version
  4. kubeadm version: &version.Info{
  5. Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:47:53Z", Go
  6. ## 设置kubelet开机启动
  7. systemctl enable kubelet
  8. systemctl enable docker

先保留所有节点的应用 端口状态,待会看k8s跑起来之后,占用了哪些端口,知道哪些程序运行了

在这里插入图片描述

9、初始化k8s-master主节点(只在主节点执行)

  1. # kubeadm init 初始化,加入一些参数
  2. #
  3. kubeadm init \
  4. --apiserver-advertise-address=10.0.0.10 \
  5. --image-repository registry.aliyuncs.com/google_containers \
  6. --kubernetes-version v1.19.3 \
  7. --service-cidr=10.1.0.0/16 \
  8. --pod-network-cidr=10.2.0.0/16 \
  9. --service-dns-domain=cluster.local \
  10. --ignore-preflight-errors=Swap \
  11. --ignore-preflight-errors=NumCPU
  12. kubeadm init \
  13. --apiserver-advertise-address=10.0.0.10 \ # api-server运行再k8s-master的ip上
  14. --image-repository registry.aliyuncs.com/google_containers \ # 拉去k8s镜像,从阿里云上获取,否则默认是国外的k8s镜像地址,下载不了
  15. --kubernetes-version v1.19.3 \ # 和kubeadm保持一直
  16. --service-cidr=10.1.0.0/16 \ # k8s服务发现网段设置,service网段
  17. --pod-network-cidr=10.2.0.0/16 \ # 设置pod创建后,的运行网段地址
  18. --service-dns-domain=cluster.local \ # k8s服务发现网段设置,service资源的域名后缀
  19. --ignore-preflight-errors=Swap \ # 忽略swap报错
  20. --ignore-preflight-errors=NumCPU # 忽略cpu数量报错

发表评论

表情:
评论列表 (有 0 条评论,182人围观)

还没有评论,来说两句吧...

相关阅读

    相关 K8S部署

    一、利用ansible部署kubernetes准备: 集群介绍 本系列文档致力于提供快速部署高可用k8s集群的工具,并且也努力成为k8s实践、使用的参考书;基于二进