目录
- 一、什么是kubernets
- 二、Kubernets本地化部署方式
- 三、部署环境
- 四、docker-ce安装
- 五、kubernets部署
Kubernetes简介
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
Kubernetes 特点
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。
1.minikube
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
官方地址:https://minikube.sigs.k8s.io/docs/start/
2.kubeadm
Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
官方地址:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/
根据实际需要部署生产环境K8S集群,所以选取kubeadm部署方式
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