虚拟机centos安装k8s 1.22(centos7安装kvm虚拟机)
虚拟机只需要关注两项:
硬件资源:建议最低2内核+2G,避免在安装k8s时告警
网络连通性:
能联通外网
虚拟机之间可以互联互通
主机与虚拟机之间可以互联互通
我使用的是Mac+VMware Fusion V11.1.0,保证网络连通性做了3步:
在centos中使用静态IP
虚拟机的网络调整为桥接模式
关闭VMWare默认的DHCP
1. 主节点安装CetnOS并设置
省略centos安装过程,我安装的是
CentOS-7-x86_64-Minimal-2009
安装时仅设置了时区为上海
以下操作都基于Bash
以下操作都使用root用户
设置静态IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=EthernetPROXY_METHOD=none BROWSER_ONLY=noBOOTPROTO=static #这里要改DEFROUTE=yes IPV4_FAILURE_FATAL=noIPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=cda6fb79-d025-4f63-8224-8e2694303e8fDEVICE=ens33 ONBOOT=yes #这里要改# 后面全是加的,需要按实际情况修改IPADDR=192.168.0.90NETMASK=255.255.255.0GATEWAY=192.168.0.1DNS1=223.5.5.5DNS2=114.114.114.114
配置完ip重启后就可以通过外部的命令行进行ssh连接访问了,无需使用虚拟机自带的窗口
安装常用软件
yum install -y nano wget git tree
配置系统
# 关闭防火墙systemctl stop firewalld systemctl disable firewalld# 关闭selinuxsed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config setenforce 0# 永久关闭swapswapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
联网对时
yum install ntpdate -y ntpdate ntp1.aliyun.com
设置桥接参数
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF
修改host(需按实际情况修改)
# 修改自己的hostnamehostnamectl set-hostname master# 添加hostcat >> /etc/hosts << EOF192.168.0.90 master192.168.0.91 node01192.168.0.92 node02 EOF
修改完建议重启
7. 配置docker
# 安装dockerwget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum -y install docker-ce# 设置docker相关参数mkdir -p /etc/docker/cat > /etc/docker/daemon.json <<EOF{"exec-opts":["native.cgroupdriver=systemd"],"registry-mirrors": ["http://hub-mirror.c.163.com"]}EOF# 设置为服务并开启服务systemctl start docker & systemctl enable docker
安装k8s
# 关闭不需要的服务systemctl stop postfix && systemctl disable postfix# 安装k8s全家桶cat > /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF yum install -y kubeadm-1.22.2 kubelet-1.22.2 kubectl-1.22.2# 添加环境变量echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile source /etc/profile
2. 复制虚拟机
因为虚拟机可以方便的复制,因此从节点可以直接复制主节点的镜像.
在本例中复制两个从节点,并做好以下配置:
修改ip为每个从节点的IP,需与host文件对应
修改hostname为每个从节点的hostname,需与host文件对应
修改完重启后可以在主从节点中ping其他的两个节点的ip和hostname,此时应该都能通.
3. 主节点初始化k8s
主节点初始化k8s,如果虚拟机资源较少,可以设置忽略cpu和内存报警
apiserver-advertise-address要填主节点的ip
kubeadm init \--apiserver-advertise-address=192.168.0.90 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.22.2 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=NumCPU \--ignore-preflight-errors=Mem
拿生成的语句在各个节点执行
每个节点将kubelet设置为服务:
systemctl enable kubelet
主节点安装flannel
kubectl apply -f https://gitee.com/mirrors/flannel/raw/master/Documentation/kube-flannel.yml
此时可以执行
kubectl get pods -n kube-system
查看各个组件的状态需要等一会,dns和flannel才会ready
全部ready后此时可以重启主节点试一试,应该重启后也没有问题
4. 安装其他辅助组件
主节点安装kubectl自动补全并自动启用
yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc
主节点安装kubectx&kubens
需要git
git clone https://gitee.com/joyko/kubectx /opt/kubectxln -s /opt/kubectx/kubectx /usr/local/bin/kubectx ln -s /opt/kubectx/kubens /usr/local/bin/kubens
主节点安装helm3
wget https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gztar -xzvf helm-v3.7.0-linux-amd64.tar.gz cp linux-amd64/helm /usr/local/bin rm -rf linux-amd64 helm-v3.7.0-linux-amd64.tar.gz
主节点安装docker-registry
docker run -d --restart always \ --name docker_registry -p 5000:5000 \ -v `pwd`/images:/var/lib/registry \ registry:2
每个节点修改/etc/docker/daemon.json
,添加如下一条
{"exec-opts":["native.cgroupdriver=systemd"],"registry-mirrors": ["http://hub-mirror.c.163.com"],"insecure-registries": ["master:5000"]}
修改完后重启docker
systemctl daemon-reload systemctl restart docker
试验一下,推送一个镜像,在其他节点上能否下载
# 与上面配置的insecure-registries要一致docker tag XXXX master:5000/XXX docker push master:5000/XXX# 在其他节点docker pull master:5000/XXX
如何删除上传到docker_registry中的镜像?
删除`pwd`/images/docker/registry/v2/repositories/需要删除的镜像
执行垃圾回收api:
docker exec docker_registry bin/registry garbage-collect /etc/docker/registry/config.yml
重启容器docker_registry
标签:--,虚拟机,etc,registry,1.22,docker,k8s,节点
来源: https://www.cnblogs.com/kzfile/p/15583466.html