天天看点

使用kubeadm方式部署K8S集群

目录

  • 一、什么是kubernets
  • 二、Kubernets本地化部署方式
  • 三、部署环境
  • 四、docker-ce安装
  • 五、kubernets部署

Kubernetes简介

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

快速部署应用

快速扩展应用

无缝对接新的应用功能

节省资源,优化硬件资源的使用

使用kubeadm方式部署K8S集群

Kubernetes 特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可扩展: 模块化, 插件化, 可挂载, 可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。

使用kubeadm方式部署K8S集群

 1.minikube

Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。

官方地址:https://minikube.sigs.k8s.io/docs/start/

使用kubeadm方式部署K8S集群

2.kubeadm

Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

官方地址:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/

使用kubeadm方式部署K8S集群

根据实际需要部署生产环境K8S集群,所以选取kubeadm部署方式

使用kubeadm方式部署K8S集群

1.下载docker-ce仓库

wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

2.替换docker-ce仓库服务器地址

替换docker_repo

vim docker-ce.repo

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/

%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@

3.删除旧版本docker

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker \ docker-ce \ docker-ee

4.安装docker-ce

yum install docker-ce

5.增添阿里云镜像加速器并设置cgroupdriver

mkdir -p /etc/docker

vim /etc/docker/daemon.json

{

"registry-mirrors": ["https://4e2n79y3.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]

}

6.重启docker服务

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

7.修改docker默认存储位置

vim /etc/systemd/system/multi-user.target.wants/docker.service

ExecStart=/usr/bin/dockerd --graph=/data/docker

8.iptable桥转发功能开启

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

echo 1 > /proc/sys/net/ipv4/ip_forward

1.master主机操作

1.1安装kubelet kubeadm kubectl

配置k8s仓库

cd /etc/yum.repos.d/

vim kubernetes.repo

[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

查看安装包版本

yum list kubelet --showduplicates

yum安装kubelet、kubeadm、kubectl

yum install -y --nogpgcheck kubelet-1.20.2-0 kubeadm-1.20.2-0 kubectl-1.20.2-0

设置开机启动kubelet

systemctl enable kubelet

设置忽略swap

vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

设置可以用tab补齐键

yum install bash-completion.noarch -y

vim /etc/profile

source <(kubectl completion bash)

source /etc/profile

1.2 初始化master

关闭swap

swapoff -a

初始化部署

kubeadm init --kubernetes-version=v1.20.2 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

创建配置文件

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

编辑静态node集群组件

cd /etc/kubernetes/manifests

vim kube-controller-manager.yaml

vim kube-scheduler.yaml

spec:

  containers:

  - command:

    - kube-scheduler

    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf

    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf

    - --bind-address=127.0.0.1

    - --kubeconfig=/etc/kubernetes/scheduler.conf

    - --leader-elect=true

    #- --port=0

2.node主机操作

2.1安装kubelet kubeadm

yum安装kubelet、kubeadm

2.2 node加入集群

kubeadm join 192.168.8.241:6443 --token z89jkt.taqmtwrm9y13grtc     --discovery-token-ca-cert-hash sha256:cecc1fcbb3c848878fc204fa2b938cf0f15283f61d47bf5a4c4acca3227cffe2

重新创建token(如果忘记token)

kubeadm token create --print-join-command

3.master主机操作

3.1部署网络插件(https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises#install-calico-on-nodes)

下载calico

cd /usr/local/k8s

curl https://docs.projectcalico.org/manifests/calico.yaml -O

修改calico配置清单

vim calico.yaml

            # The default IPv4 pool to create on startup if none exists. Pod IPs will be

            # chosen from this range. Changing this value after installation will have

            # no effect. This should fall within `--cluster-cidr`.

            - name: CALICO_IPV4POOL_CIDR

              value: "10.244.0.0/16"

            - name: IP_AUTODETECTION_METHOD

              value: "interface=ens33"  # ens 根据实际网卡开头配置

创建calico

kubecl -f calico.yaml

3.2.部署metric server

下载metrics

/usr/local/src/k8s/

curl -Ls https://api.github.com/repos/kubernetes-sigs/metrics-server/tarball/v0.3.6 -o metrics-server-v0.3.6.tar.gz

解压metrics

tar -xvf metrics-server-v0.3.6.tar.gz

修改metrics清单配置

cd /usr/local/src/k8s/kubernetes-sigs-metrics-server-d1f4f6f/deploy/1.8+

vim metrics-server-deployment.yaml

      containers:

      - name: metrics-server

        image: k8s.gcr.io/metrics-server-amd64:v0.3.6

        imagePullPolicy: Always

        command:

        - /metrics-server

        - --kubelet-insecure-tls

        - --kubelet-preferred-address-types=InternalIP

创建metrics

kubectl apply -f metrics-server-deployment.yaml