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