基于CentOS使用Yum搭建简单K8s集群
环境简介
名称 | 版本 |
---|---|
VirtualBox.app | 6.0.10 |
Vagrant | 2.2.3 |
CentOS | 7.6 |
Etcd | 3.3.11 |
Kubernetes | v1.5.2 |
虚拟机相关配置参考Vagrantfile.
环境准备
Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 1.6.0"
boxes = [
{
:name => "k8s-master",
:eth1 => "192.168.11.21",
:mem => "1024",
:cpu => "1"
},
{
:name => "k8s-node1",
:eth1 => "192.168.11.22",
:mem => "1024",
:cpu => "1"
},
{
:name => "k8s-node2",
:eth1 => "192.168.11.23",
:mem => "1024",
:cpu => "1"
}
]
Vagrant.configure(2) do |config|
config.vm.box = "centos-7.6"
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = opts[:mem]
v.vmx["numvcpus"] = opts[:cpu]
end
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vm.network :private_network, ip: opts[:eth1]
end
end
end
创建完成之后分别为三台机器更新yum源和epel源:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
分别修改三台机器的 /etc/hosts
文件,添加以下内容,使得三台机器之间可以互相访问:
192.168.11.21 k8s-master
192.168.11.22 k8s-node1
192.168.11.23 k8s-node2
修改完成之后测试是否可以互通。
开始搭建
为Master节点安装配置etcd
yum安装etcd:
[root@k8s-master ~]# yum install etcd -y # 安装etcd
修改etcd配置文件:
[root@k8s-master ~]# vim /etc/etcd/etcd.conf # 修改配置文件
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" # 第6行
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.11.21:2379" # 第21行
设置etcd开机启动&启动etcd:
[root@k8s-master ~]# systemctl start etcd.service # 启动etcd
[root@k8s-master ~]# systemctl enable etcd.service # 设置开启启动
测试etcd服务是否健康:
[root@k8s-master ~]# etcdctl -C http://192.168.11.21:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://192.168.11.21:2379 cluster is healthy
为Master节点安装Kubernetes
使用yum安装kubernetes:
[root@k8s-master ~]# yum install kubernetes-master.x86_64 -y
修改kubernetes的apiserver的配置文件:
[root@k8s-master ~]# vim /etc/kubernetes/apiserver :set nu
# 第8行 将默认值修改为0.0.0.0
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# 第11行 打开注释
KUBE_API_PORT="--port=8080"
# 第14行 打开注释
KUBELET_PORT="--kubelet-port=10250"
#第17行 将默认值修改为master节点ip
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.11.21:2379"
# 第23行 删掉ServiceAccount内容
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
修改kubernetes的配置文件:
[root@k8s-master ~]# vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.11.21:8080" # 第22行
设置开机启动&启动K8s相关服务:
[root@k8s-master ~]# systemctl enable kube-apiserver.service
[root@k8s-master ~]# systemctl restart kube-apiserver.service
[root@k8s-master ~]# systemctl enable kube-controller-manager.service
[root@k8s-master ~]# systemctl restart kube-controller-manager.service
[root@k8s-master ~]# systemctl enable kube-scheduler.service
[root@k8s-master ~]# systemctl restart kube-scheduler.service
检查服务是否安装正常
[root@k8s-master ~]# kubectl get componentstatus
NAME STATUS MESSAGE ERROR
etcd-0 Healthy {"health":"true"}
scheduler Healthy ok
controller-manager Healthy ok
为Node节点安装Kubernetes
在k8s-node1& k8s-node2节点分别执行以下命令:
yum install kubernetes-node.x86_64 -y # 安装k8s
vim /etc/kubernetes/config :set nu # 修改kubernetes配置文件
KUBE_MASTER="--master=http://192.168.11.21:8080"
vim /etc/kubernetes/kubelet # 修改kubernetes配置文件
# 第5行 将默认值修改为 0.0.0.0
KUBELET_ADDRESS="--address=0.0.0.0"
# 第8行 打开注释
KUBELET_PORT="--port=10250"
# 第11行 修改默认值为node节点的Ip
KUBELET_HOSTNAME="--hostname-override=10.0.0.12"
# 第14行 修改默认值为Master节点的IP
KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"
修改完成配置之后,分别重启相关服务:
systemctl enable kubelet.service
systemctl restart kubelet.service
systemctl enable kube-proxy.service
systemctl restart kube-proxy.service
为所有节点配置Flannel网络
在所有节点上进行安装Flannel ,然后修改其配置文件:
yum install flannel -y
sed -i 's#http://127.0.0.1:2379#http://192.168.11.21:2379#g'
Master节点:
##master节点:
etcdctl mk /atomic.io/network/config '{ "Network": "172.18.0.0/16" }'
yum install docker -y
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl restart docker
systemctl enable docker
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
Node节点:
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl restart docker
systemctl restart kubelet.service
systemctl restart kube-proxy.service
vim /usr/lib/systemd/system/docker.service
#在[Service]区域下增加一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
systemctl daemon-reload
systemctl restart docker
将Master节点配置为镜像仓库
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11:5000"]
}
systemctl restart docker
#master节点
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
至此一个简单的K8s集群就搭建完毕了。
环境测试
在Master节点检查集群服务是否正常:
[root@k8s-master ~]# kubectl get nodes
NAME STATUS AGE
192.168.11.22 Ready 29s
192.168.11.23 Ready 27s
如果出现如上内容说明集群各节点正常运行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yang!