K8s系列-安装k8s集群

什么是 Kubernetes (k8s)?
Kubernetes是一个开源的容器集群管理系统,可以实现大规模部署和管理容器化应用程序,主要功能包括:

  • 服务发现和负载均衡

Kubernetes 可以使用 DNS 名称或自己的 IP 地址来曝露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

  • 存储编排

Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

  • 自动部署和回滚

使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。

  • 自动完成装箱计算

你为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。

  • 自我修复

你为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。

  • 密钥与配置管理

Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥

准备三台服务器,操作系统centos7.x

硬件配置:CPU2核、内存2GB、硬盘30GB

确保机器间网络互通,时钟同步,所需镜像及资源包下载链接:点击下载

规划:

节点名称 IP 安装组件
k8s-master 192.168.14.101 docker etcd kubelet kube-proxy kube-apiserver kube-controller-manager kube-scheduler
k8s-node1 192.168.14.102 docker etcd kubelet kube-proxy
k8s-node2 192.168.14.103 docker etcd kubelet kube-proxy
docker私有仓库 192.168.14.100 docker(服务器配置可以低点)

服务器初始化操作

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭 selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

关闭 swap

swapoff -a

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

master节点添加 hosts

cat >> /etc/hosts << EOF

192.168.14.101 k8s-master

192.168.14.102 k8s-node1

192.168.14.103 k8s-node2

EOF

将桥接的 IPv4 流量传递到 iptables 的链

cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

生效

sysctl -p

部署docker本地私有镜像仓库 (192.168.14.100)

#将资源包里面的docker_绿色免安装版.tar.gz解压,把docker_inspkg下的所有文件放到 /usr/sbin/目录下

#使用 systemd 管理 docker

vim /usr/lib/systemd/system/docker.service

Unit

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

Service

Type=notify

ExecStart=/usr/sbin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

TimeoutStartSec=0

Delegate=yes

KillMode=process

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

Install

WantedBy=multi-user.target

###########################分 割 线 #############################

#启动并设置开机启动

systemctl daemon-reload

systemctl start docker

systemctl enable docker

###########################分 割 线 #############################

#新建或修改daemon.json

vim /etc/docker/daemon.json

{

"registry-mirror" : ["https://hub-mirror.c.163.com"],

"insecure-registries" : ["registry:5000"],

"log-level": "warn",

"log-opts": {

"max-size": "20m",

"max-file": "3"

}

}

###########################分 割 线 #############################

#重启docker服务

systemctl restart docker

###########################分 割 线 #############################

#将资源包里面的docker-images目录下registry镜像源导入

docker load < registry.docker

###########################分 割 线 #############################

#启动容器

mkdir -p /opt/data/registry

docker run -d --name private_registry -p 5000:5000 -v /opt/data/registry:/var/lib/registry --restart=always registry

  • 上传资源包里面的镜像

#将资源包里面的docker-images目录下所有镜像导入(registry.docker已经导过)

docker load -i calico_3.8.8.tar

docker load -i dashboard-v2.0.4.docker

docker load -i metrics-scraper-v1.0.4.docker

docker load -i coredns-1.6.2.docker

docker load -i busybox.docker

docker images #查看镜像

REPOSITORY TAG IMAGE ID CREATED SIZE

registry latest 1fd8e1b0bb7e 13 days ago 26.2MB

kubernetesui/dashboard v2.0.4 46d0a29c3f61 7 months ago 225MB

kubernetesui/metrics-scraper v1.0.4 86262685d9ab 13 months ago 36.9MB

coredns/coredns 1.6.2 bf261d157914 20 months ago 44.1MB

registry:5000/calico/node v3.8.8-1 3610c051aa19 23 months ago 192MB

registry:5000/calico/cni v3.8.8-1 ca2a236d9210 23 months ago 161MB

registry:5000/calico/kube-controllers v3.8.8 7125b7d47e9f 23 months ago 48.9MB

registry:5000/calico/pod2daemon-flexvol v3.8.8 cacd6d732f12 23 months ago 9.38MB

busybox 1.28.4 8c811b4aec35 2 years ago 1.15MB

#给刚导入的镜像重新打标签

docker tag busybox:1.28.4 registry:5000/busybox

docker tag coredns/coredns:1.6.2 registry:5000/coredns

docker tag kubernetesui/metrics-scraper:v1.0.4 registry0:5000/metrics-scraper

docker tag kubernetesui/dashboard:v2.0.4 registry:5000/dashboard

#打完标签后的镜像上传到本地仓库

docker push registry:5000/busybox

docker push registry:5000/flannel-amd64

docker push registry:5000/flannel-arm

docker push registry:5000/flannel-arm64

docker push registry:5000/flannel-ppc64le

docker push registry:5000/flannel-s390x

docker push registry:5000/coredns

docker push registry:5000/metrics-scraper

docker push registry:5000/dashboard

#删除不需要的镜像

docker rmi busybox:1.28.4

docker rmi docker rmi quay.io/coreos/flannel:v0.11.0-amd64

docker rmi coredns/coredns:1.6.2

docker rmi kubernetesui/metrics-scraper:v1.0.4

docker rmi kubernetesui/dashboard:v2.0.4