k8s安装部署1 - 环境准备
k8s学习笔记
·
k8s基础组件介绍
- kube-apiserver:是信息的汇聚中枢,提供了所有内部和外部的 API 请求操作的唯一入口,负责整个集群的认证、授权、访问控制、服务发现等能力
- Kube-Controller-Manager:负责维护整个 Kubernetes 集群的状态,比如多副本创建、滚动更新等
- Kube-scheduler:监听未调度的 Pod,按照预定的调度策略绑定到满足条件的节点上
- kube-proxy:控制网络访问,互相同步状态数据状态
- pod:是 Kubernetes 中原子化的部署单元,它可以包含一个或多个容器,而且容器之间可以共享网络、存储资源
Kubernetes 中所有的状态都是采用上报的方式实现的,所有的容器状态汇报都是由 Kubelet 主动向 APIServer 发起的
一旦新增的 Node 被 APIServer 纳管进来后,Kubelet 进程就会定时向 APIServer 汇报“心跳”,即汇报自身的状态,包括自身健康状态、负载数据统计等
当一段时间内心跳包没有更新,那么此时 kube-controller-manager 就会将其标记为NodeLost(失联)
k8s核心组件
组件名称 | 说明 |
---|---|
etcd | 保存了整个集群的状态 |
apiserver | 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 |
controller manager | 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等 |
scheduler | 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上 |
kubelet | 负责维护容器的生命周期,同时也负责Volume和网络的管理 |
Container runtime | 负责镜像管理以及Pod和容器的真正运行 |
kube-proxy | 负责为Service提供集群内部的服务发现和负载均衡 |
服务器准备
请先参考 Windows10安装VirtualBox及vagrant 安装好VirtualBox及vagrant
服务器规划
使用3台服务器部署,ip地址如下:
192.168.99.200 k8s-node1
192.168.99.201 k8s-node2
192.168.99.202 k8s-node3
其中192.168.99.200作为k8s的主节点,安装k8s的软件及在这台服务器上输入命令行做测试,其它2台作为node节点
假定Vagrantfile
文件的路径在D:\vagrant\k8s
Vagrantfile
文件的内容为
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos/7"
node.vm.box_url = "https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box"
# 设置虚拟机的主机名
node.vm.hostname="k8s-node#{i}"
# 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.99.#{199+i}", netmask: "255.255.255.0"
# 设置主机与虚拟机的共享目录
# node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "k8s-node#{i}"
# 设置虚拟机的内存大小
v.memory = 3072
# 设置虚拟机的CPU个数
v.cpus = 4
end
end
end
end
启动服务器
使用管理员权限打开cmd命令行窗口
cd D:\vagrant\k8s
#启动服务器
vagrant up
连接服务器,配置ssh及hosts
vagrant ssh k8s-node1
#切换root用户,默认的密码是vagrant
su
#sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
#把PasswordAuthentication no 修改成yes,保存并退出
vi /etc/ssh/sshd_config
#重启ssh服务
service sshd restart
vi /etc/hosts
#删除这行127.0.1.1 k8s-node1 k8s-node1
192.168.99.200 k8s-node1
192.168.99.201 k8s-node2
192.168.99.202 k8s-node3
#保存,执行2次exit退出k8s-node1服务器
使用vagrant ssh k8s-node2
和 vagrant ssh k8s-node3
连接上服务器,做相同的配置
使用xshell连接3台服务器
使用xshell用root用户连接上3台服务器
使用xshell的工具->发送键输入到所有会话,给3台服务器同时执行命令
#检查3台机器是否能正常通信
ping k8s-node1
ping k8s-node2
ping k8s-node3
#安装网络工具包,包含ifconfig等
yum install -y net-tools
#安装sz、rz
yum install -y lrzsz
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#关闭交换分区 free -m 其中swap 要为0
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#使以上配置生效
sudo sysctl --system
k8s安装流程
- 在所有机器上安装docker、kubelet、kubectl、kubeadm
- 在主节点(k8s-node1)上执行 kubeadm init
- 在其它节点(k8s-node2、k8s-node3)加入集群 kubeadm join
安装docker
请参考 Centos7安装docker 安装docker
这里简要使用命令安装docker
sudo yum install -y yum-utils
#使用阿里云的库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装指定版本docker
yum install -y docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io-1.4.6
#启动docker
sudo systemctl start docker
#设置开机自动启动docker
sudo systemctl enable docker
docker -v
#docker设置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://rn2snvg1.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
#重新加载配置项、重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
更多推荐
已为社区贡献16条内容
所有评论(0)