Kubernetes集群环境搭建
快速体验
单机开发环境,通过minikube来安装,在Linux环境上,执行
minikube start --vm-driver=virtualbox --registry-mirror=https://registry.docker-cn.com
集群安装
如果为集群安装,需要前置要求:Centos7、2G以上内存、2CPU以上、30G硬盘以上,网络互通,通外网,禁止Swap分区,内存可以越大越好,VirtualBox虚拟机需要使用NAT网络,这样创建出来的虚拟机不会重复IP
虚拟机创建
使用vagrant快速创建虚拟机,也可单独通过镜像文件创建Linux
vagrant init centos/7
vagrant up
系统镜像下载,可用迅雷下,速度较快,下载CentOS/7,下载后可通过以下命令离线安装
vagrant box add D:\virtual.box --name centos/7
vagrant up
在vagrant目录中,编辑vagrantfile文件,修改如下,用于直接快速创建3台虚拟机
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.hostname = "k8s-node#{i}" # 设置虚拟机的IP node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0" # 设置主机与虚拟机的共享目录 # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share" # VirtualBox相关配置 node.vm.provider "virtualbox" do |v| # 设置虚拟机的名称 v.name = "k8s-node#{1}" # 设置虚拟机的内存大小 v.memory = 4096 # 设置虚拟机的CPU个数 v.cpus = 4 end end end end
编辑后通过命令创建虚拟机
vagrant up
配置虚拟机相关信息
# 修改配置允许ssh登陆 vi /etc/ssh/sshd_config # 修改PasswordAuthentication yes service sshd restart
配置网络
# 查看网络路由使用的是什么网卡 ip route show # 查看具体IP配置 ip addr
在VirtualBox全局设定中,网络模块增加一个NAT网络
在每个虚拟机设置的网络中,不再使用网络地址转换(NAT),而选择NAT网络,并在高级中重新生成MAC地址
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
关闭swap
# 临时 swapoff -a # 永久 sed -ri 's/.*swap.*/#&/' /etc/fstab # 验证,swap必须为0 free -g
配置主机名与IP对应关系
# 根据实际IP与主机名配置 vi /ect/hosts 10.0.2.5 k8s-node1 10.0.2.4 k8s-node2 10.0.2.15 k8s-node3
安装基础环境
为所有节点安装Docker
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce \
docker-ce-cli \
containerd.io
配置docker加速
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://ayrcbdjt.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl start docker systemctl enable docker
配置阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
安装kubeadm,kubelet,kubectl
yum install -y kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6
systemctl enable kubelet
systemctl start kubelet
集群创建
下载images脚本,若网络顺畅可跳过
#!/bin/bash images=( kube-apiserver:v1.18.6 kube-proxy:v1.18.6 kube-controller-manager:v1.18.6 kube-scheduler:v1.18.6 coredns:1.6.5 etcd:3.4.3-0 pause:3.1 ) for imageName in ${images[@]} ; do docker pull registry. aliyuncs.com/google_containers/$imageName # docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName done
初始化master节点
kubeadm init \ --apiserver-advertise-address=10.0.2.5 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.6 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.244.0.0/16
执行完毕后,先执行日志最后打印的3条命令,然后保存好加入集群的token,该token默认2小时有效,过期后需要重新创建token
若过期则使用如下命令重新获取
kubeadm token create --print-join-command
kubeadm token create --tt|0 --print-join-command
安装pod网络插件,这里使用的是flannel
kubectl apply -f \ https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
检查配置是否成功
# 获取名称空间 kubectl get ns # 获取pods,其中kube-flannel项需要是Running状态 kubectl get pods --all-namespaces # 获取所有的节点 kubectl get nodes
等待kube-flannel全部启动好,使用之前的token命令,让其他节点加入集群
监控集群创建进度
watch kubectl get pod –all-namespaces -o wide
测试操作体验
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 kubectl get all -o wide kubectl get pods -o wide kubectl get svc kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort kubectl scale --replicas=3 deployment tomcat6
yml模板输出
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run -o yaml > tomcat6.yml kubectl apply -f example-service.yaml
最后可视化界面可以使用Kubesphere