kubernetes简介
kubernetes项目来源与borg,集结了borg设计思想的精华,并吸取了borg系统中的经验和教训。
kubernetes对计算机资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。
kubernetes的好处:
1.隐藏资源管理和错误处理,用户仅需关注应用的开发。
2.服务高可用、高可靠。
可将负载运行在由成千上万的机器联合而成的集群中。
kubernetes集群包含节点代理kubelet和master组件(APIs,scheduler,etc),一切都基于分布式的存储系统
scheduler调度器,把容器的job调度到各个节点上运行。
controller manager控制器。控制容器的运行方式。就是控制容器的状态。
etcd:分布式集群存储。
pod是k8s的最小调度单位。
打开之前的4个虚拟机,2,3,4来做k8s集群的,可以不需要上网,生产环境中容器云不需要直接连外网,因为不够安全。但是下载镜像的时候需要连外网。
server1 cd cd harbor/ ls #需要保证仓库连外网 docker-compose ps docker-compose start #确保没有开启的开启
官方文档:
在使用docker时必须启动引擎。systemctl status docker
docker开服务引擎是为了编排,
先把2,3,4台虚拟机整理,清楚干净,之前做过swarm
server2 docker ps docker volume ls docker network ls docker network prune ip addr systemctl status docker rm -f /etc/systemd/system/docker.service.d/10-machine.conf systemctl daemon-reload systemctl restart docker docker info
若出现问题:
因为docker.socket没有被停掉,以下为正确的解决步骤
server2,3,4 docker network prune systemctl status docker rm -f /etc/systemd/system/docker.service.d/10-machine.conf systemctl daemon-reload cd /etc/docker/ ls systemctl stop docker systemctl stop docker.socket systemctl start docker docker info netstat -antlp ip addr #查看网络是否正常 docker info#需要将cgroup的驱动调整为systemd
为了保证kubelet正常工作,禁用交换分区。
1、修改server配置参数
server2 vim daemon.json
server2 systemctl daemon-reload systemctl reload docker docker info
如果cgroup drive没有生效,还是原来的。
syetmctl restart docker docker info
ssh-keygen ssh-copy-id server3 ssh-copy-id server4 scp daemon.json server3:/etc/docker/ scp daemon.json server4:/etc/docker/
server3,4 查看有没有改过来 systemctl restart docker docker info
2、禁用swap分区
server2,3,4 swapoff -a vim /etc/fstab
3、安装kubeadm、kubelet是每个节点都得装,kubectl用来与集群通信的命令行工具,在操作集群的那台机器上装就可以了。
kubeadm用来初始化集群的指令
kubelet在集群中的每个节点上用来启动pod和容器等
阿里云
server2 cd /etc/yum.repos.d/ vim k8s.repo
yum repolist yum install -y kubelet kubeadm kubectl systemctl enable --now kubelet scp k8s.repo server3:/etc/yum.repos.d/ scp k8s.repo server4:/etc/yum.repos.d/ ls
server3,4 yum install -y kubelet kubeadm kubectl
server2 ssh server3 systemctl enable --now kubelet ssh server4 systemctl enable --now kubelet
server3 systemctl status kubelet systemctl is-enable kubelet



