K8s安装
Master本身也要安装docker的容器,所以既作为master,也作为node
更改主机名
hostnamectl set-hostname server1
hostnamectl set-hostname server2
hostnamectl set-hostname server3
bash
Master安装服务 etcd api-server controlor-manager scheduler kubelet kube-proxy
- 主机名和防火墙配置
三台相同
[root@server1 ~]# iptables -F
[root@server1 ~]# iptables-save #保存ipstble规则并开机自动加载
[root@server1 ~]# systemctl stop firewalld.service && systemctl disable firewalld.service
server1
[root@server1 ~]# vim /etc/hosts 主机解析
192.168.1.10 server1
192.168.1.20 server2
192.168.1.30 server3
- 上传公钥
ssh-keygen #获取公钥
ssh-copy-id -i root@server2 #公钥上传
ssh-copy-id -i root@server3
-i:指定公钥文件把本地的ssh公钥文件安装到远程主机对应的账户下
- server1安装etcd服务
yum -y install etcd
- 配置etcd
vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #数据存放在那个目录
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" #监听的一个地址,0.0.0.0表示所有的,本地访问的话是127.0.0.1
ETCD_NAME="default" #节点名字,配置集群的话这里的名字必须不一样
TCD_ADVERTISE_CLIENT_URLS="http://192.168.1.10:2379" #配置集群的ip地址,我们没有配置就本机ip
启动etcd
systemctl start etcd #启动etcd
systemctl enable etcd #设置开机自启
netstat -lutup #查看端口,起来的话就监听,
-l:显示监控中的服务器的网络
-u:显示udp传输协议的连接情况
-tup:显示tcp的传输协议的连接情况
由于我们设置的,所以监听的是本机的2380和任务网段的2379,2379是对外提供服务使用的,往etcd写数据就使用这个端口,etcd集群之间相互同步用的2380
- 安装master节点
yum -y install kubernetes-master.x86_64
- 从之前我们知道了,master上有4个服务,所以我们需要去配置一下
vim /etc/kubernetes/apiserver
首先配置api-server
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" #默认是127.0.0.1,我们要想用客户端访问就需要0.0.0.0
开启api-server的端口
KUBE_API_PORT="--port=8080"
配置minions,节点的端口
KUBELET_PORT="--kubelet-port=10250"
连接etce
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.10:2379"
- 配置controller-manager和scheduler的配置文件
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.1.10:8080" #是controller-manager, scheduler, 和 proxy 来找到api-server的地址,api-server在哪台主机,哪台就是master
- 启动服务
首先启动api-server
systemctl start kube-apiserver.service
启动controller-manager
systemctl start kube-controller-manager.service
启动scheduler
systemctl start kube-scheduler.service
- 设置开机自动加载,防止自动关闭
systemctl enable kube-apiserver.service
systemctl enable kube-scheduler.service
systemctl enable kube-controller-manager.service
- 查看状态
kubectl get componentstatus
Node节点安装
- 安装node节点,安装的时候会默认帮我们安装上docker,都安装
yum -y install kubernetes-node.x86_64
- 先在master配置node服务
vim /etc/kubernetes/config #master之前配置过,所以不需要配置
vim /etc/kubernetes/kubelet #配置kubelet配置文件
KUBELET_ADDRESS="--address=192.168.1.10" #配置kubelet的监听地址
UBELET_PORT="--port=10250" #端口10250
KUBELET_HOSTNAME="--hostname-override=server1" #当我们有多个节点的时候,每个节点都需要给他添加上一个标签,这样master命令的时候就只要一个节点回应,可以用ip地址来区别,也可以用不同主机名来区分
KUBELET_API_SERVER="--api-servers=http://192.168.1.10:8080" #连接api-server
- 启动kubelet服务,启动kubelet自动启动docker
systemctl status docker
systemctl start kubelet.service #启动kubelet
systemctl status docker #发现启动docker服务
systemctl enable kubelet.service #设置kubelet开机自启
systemctl start kube-proxy.service #启动proxy服务
systemctl enable kube-proxy.service #开机自启
kubectl get nodes #查看注册节点,启动kubelet的时候,就自动注册进来了
- server2上修改配置文件
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.1.10:8080" #主要是给kube-proxy用的
- 继续修改server2另一个配置文件
vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=192.168.1.20" #本机的IP
KUBELET_PORT="--port=10250" #打开10250监听端口
KUBELET_HOSTNAME="--hostname-override=server2" #修改主机标签
UBELET_API_SERVER="--api-servers=http://192.168.1.10:8080" #指定api-server的地址
- 开启服务
systemctl start kubelet.service #开启kubelet服务
systemctl enable kubelet.service #设置开机自启
systemctl start kube-proxy.service #开启kube-proxy服务
systemctl enable kube-proxy.service #设置开机自启
- master节点查看
kubectl get nodes #查看node节点