解决问题:当你只有2-3台一台服务的时候,在一天服务器上装一个docker容器,在容器中运行多个程序没有什么大问题。但是当你有100台服务,同时要装好多个程序,就变得十分耗时,k8s就是为了解决这个问题。

作用:自动化容器的部署和复制,随时扩展或者收缩容器规模,容器分组,容器间的负载均衡,实时监控,自动替换。

同类型的产品:

docker compose,单机编排工具。

docker swarm ,集群编排工具。

模型

1.环境准备

1. 设置主机名与时区

timedatectl set-timezone Asia/Shanghai #都要执行

hostnamectl set-hostname master #132执行

hostnamectl set-hostname node1 #133执行

hostnamectl set-hostname node2 #137执行

2. 添加hosts网络主机配置,三台虚拟机都要设置

vim /etc/hosts

192.168.163.132 master

192.168.163.133 node1

192.168.163.137 node2

3. 关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

systemctl disable firewalld

systemctl stop firewalld

上传安装包安装:

4. 将镜像包上传至服务器每个节点

mkdir /usr/local/k8s-install

cd /usr/local/k8s-install

XFTP上传安装文件

5. 按每个Centos上安装Docker

tar -zxvf docker-ce-18.09.tar.gz

cd docker

yum localinstall -y *.rpm

systemctl start docker

systemctl enable docker

6. 确保从cgroups均在同一个从groupfs#cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。

#cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。

#子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。

#在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源

docker info | grep cgroup

如果不是groupfs,执行下列语句

cat << EOF > /etc/docker/daemon.json

{ "exec-opts": ["native.cgroupdriver=cgroupfs"]}

EOF

systemctl daemon-reload && systemctl restart docker

7. 安装kubeadm

# kubeadm是集群部署工具

cd /usr/local/k8s-install/kubernetes-1.14

tar -zxvf kube114-rpm.tar.gz

cd kube114-rpm

yum localinstall -y *.rpm

8. 关闭交换区

swapoff -a

vi /etc/fstab

#swap一行注释

9. 配置网桥

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

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

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

EOF

sysctl --system

10. 通过镜像安装k8s

cd /usr/local/k8s-install/kubernetes-1.14

docker load -i k8s-114-images.tar.gz

docker load -i flannel-dashboard.tar.gz

2.利用Kubeadm部署K8S集群

1. master主服务器配置

kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube

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

sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get nodes

#查看存在问题的pod

kubectl get pod --all-namespaces

#设置全局变量

#安装flannel网络组件

kubectl create -f kube-flannel.yml

2. 加入NODE节点

kubeadm join 192.168.4.130:6443 --token 911xit.xkp2gfxbvf5wuqz7 \

--discovery-token-ca-cert-hash sha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72

如果忘记

在master 上执行kubeadm token list 查看 ,在node上运行

kubeadm join 192.168.163.132:6443 --token aoeout.9k0ybvrfy09q1jf6 --discovery-token-unsafe-skip-ca-verification

kubectl get nodes

3. Master开启仪表盘

kubectl apply -f kubernetes-dashboard.yaml

kubectl apply -f admin-role.yaml

kubectl apply -f kubernetes-dashboard-admin.rbac.yaml

kubectl -n kube-system get svc

http://192.168.163.132:32000 访问

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐