新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。
1.下载docker-ce仓库
2.替换docker-ce仓库服务器地址
替换docker_repo
vim docker-ce.repo
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
配置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安装kubelet、kubeadm
yum install -y --nogpgcheck kubelet-1.20.2-0 kubeadm-1.20.2-0 kubectl-1.20.2-0
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