容器编排与Kubernetes(k8s)

165 阅读3分钟
    
	容器编排工具比较
		docker compose 单机编排工具
		docker swarm 集群编排
		kubernetes 
	k8s的职责
		自动化容器的部署和复制
		随时扩展或收缩容器规模
		容器分组Group,并且提供容器间的负载均衡
		实时监控,及时故障发现,自动替换
	k8s基本概念
		Pod
			POD是'容器'的容器,可以包含多个'Container'
			POD是K8s最小可部署单元,一个POD就是一个进程
			POD内部容器网络互通,每个POD都有独立虚拟IP
			POD都是部署完整的应用或模块
				POD 【Pause 、user container1 、user container2】
					Pause 1.提供一个共享的网络空间 2.为当前POD提供一个共享的Volumes(共享存储卷)
		Container(容器)
		label(标签)
			说明性标签:在进行部署的时候在哪些pod操作,相当于每一个pod别名
		replication controller (复制控制器)
			pod数量进行监控
		service (服务)
		node (节点)
		Kubernetes Master(Kubernetes主节点)
		kubeket kube-proxy docker 
	国内安装K8S的四种途径
		使用kubeadmin通过离线镜像安装
		使用阿里公有云平台k8s
		通过yum官方仓库安装,但是版本比较太古老
		二进制包的形式进行安装,kubeasz(github)
	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上传安装文件
	ls
		kubernetes-1.14
	cd kubernetes-1.14
	ls
		flannel-dashboard.tar.gz kube114-rpm.tar.gz docker-ce-18.09.tar.gz k8s-114-images.tar.gz等等
	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
		Cgroup Driver:cgroupfs # 如果不是执行下面的命令
		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
	cd 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
	cd kubernetes-1.14
	docker load -i k8s-114-images.tar.gz
	docker load -i flannel-dashboard.tar.gz
	11.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
		在master上紧接着执行上面三行
		以及会看到
		kubeadm join 192.168.0.132:6443 --token aoeout.********* --discovery-token-unsaf-skip-ca-verification
		在其他节点上执行这段话
	kubectl get nodes
	kubectl get pod --all-namespaces
	设置全局变量
	安装flannel网络组件
	kubectl create -f kube-flannel.yaml
	kubeadm token list
		查看token
	kubeadm/kubelet/kubectl区别
		kubeadm是kubernetes集群快速构建工具
		kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现
		kubectl是kubernetes命令行工具,提供指令
	启动节点命令:
		systemctl start kubelet #启动节点的K8s服务
		systemctl enable kubelet #设置开机启动