K8S虚拟机安装

本文详细介绍了如何使用Vagrant创建虚拟机,配置Linux环境,包括开启root权限、禁用防火墙等,以及Docker和Kubernetes(K8S)的安装与部署,如添加阿里云yum源、kubeadm配置和node节点加入等步骤。
摘要由CSDN通过智能技术生成

目录

 

目录

一、虚拟机安装

1.1、软件安装

1.2、Vagrant生成Vagrantfile

1.3、Vagrant创建虚拟机

1.4、Vagrant连接虚拟机

二、Linux配置

 2.1、开启root密码访问权限

2.2、禁用防火墙

2.3、关闭交换区

2.4、将桥接的IPv4流量传递到iptables的链,更精确统计流量

2.5、Host设置

2.6、时区设置

三、Docker安装

四、K8S安装

4.1、添加k8s的阿里云yum源

4.2、kubeadm,kubelet 和 kubectl 安装

4.3、部署k8s-master

4.3.1、制作镜像下载脚本

4.3.2、kubeadm安装

4.3.3、测试 kubectl

4.4、master 安装pod网络插件

4.5、加入node 节点

五、其他



一、虚拟机安装

1.1、软件安装

 安装虚拟化系统Oracle virtualbox及管理工具Vagrant

1.2、Vagrant生成Vagrantfile

执行命令:vagrant init 生成Vagrantfile

1.3、Vagrant创建虚拟机

通过vagrantfile来创建三个虚拟机,分别为k8s-node1,k8s-node2和k8s-node3,内容如下

# 编辑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.hostname = "k8s-node#{i}"
			# 设置虚拟机IP
			node.vm.network "private_network", ip: "192.168.56.#{99+i}", nemask:"255.255.255.0"
			# 设置主机与虚拟机的共享目录
			#node.vm.synced_flder "~/Docments/vagrant/share", "/home/vagrant/share"

			# VirtaulBox相关配置
			node.vm.provider "virtualbox" do |v|
				# 设置虚拟机名称
				v.name = "k8s-node#{i}"
				v.memory = 1536
				# 设置虚拟机CPU个数
				v.cpus = 2
			end
		end
	end
end

执行命令:vagrant up 创建虚拟机

1.4、Vagrant连接虚拟机

执行命令:vagrant ssh xxx

二、Linux配置

 2.1、开启root密码访问权限

# 修改配置 PermitRootLogin yes PasswordAuthentication yes
sudo vi /etc/ssh/sshd_config
# 重启sshd服务
service sshd restart

2.2、禁用防火墙

sudo sed -i 's/enforcing/disabled/' /etc/selinux/config
# 关闭selinux防火墙
setenforce 0

2.3、关闭交换区

sudo sed -ri 's/.swap./#&/' /etc/fstab 

2.4、将桥接的IPv4流量传递到iptables的链,更精确统计流量

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

2.5、Host设置

vi /etc/hosts
10.0.2.15  k8s-node1 
10.0.2.4   k8s-node2 
10.0.2.5   k8s-node3

2.6、时区设置

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

三、Docker安装

Docker 安装与使用

四、K8S安装

4.1、添加k8s的阿里云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=1
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

4.2、kubeadm,kubelet 和 kubectl 安装

yum install -y kubelet-v1.25.2 kubeadm-v1.25.2 kubectl-v1.25.2
systemctl enable kubelet & systemctl start kubelet

#查看kubelet运行日志:
journalctl -xefu kubelet 

4.3、部署k8s-master

4.3.1、制作镜像下载脚本
#!/bin/bash
images=(
    kube-apiserver:v1.25.2
        kube-proxy:v1.25.2
    kube-controller-manager:v1.25.2
    kube-scheduler:v1.25.2
    coredns:1.6.5
    etcd:3.4.3-0
        pause:3.6
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

  执行命令:chmod 700 master_images.sh 赋予文件执行权限,并执行脚本下载镜像

# 下载 pause镜像
ctr -n k8s.io i pull -k  registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
# 修改pause镜像的tag
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
4.3.2、kubeadm安装
  • 配置文档

执行命令:kubeadm config print init-defaults 生成默认配置文档 kubeadm-config.yaml,修改

localAPIEndpoint:advertiseAddress

nodeRegistration:name

# 增加kubelet驱动设置为systemd

---

kind: KubeletConfiguration

apiVersion: kubelet.config.k8s.io/v1beta1

cgroupDriver: systemd

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.0.2.15
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: k8s-node1
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  #指定阿里云镜像仓库地址
kind: ClusterConfiguration
kubernetesVersion: 1.25.2
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/16
scheduler: {}

---

kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
  • 安装master

        命令:sudo kubeadm init --config kubeadm-config.yaml --v=5 # 安装,输出详细日志,保存执行

  • 按照上述执行结果,进行kuke配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • k8s重置

        执行命令:kubeadm reset -f

  • kubelet 异常处理:containerd重启
rm /etc/containerd/config.toml sudo systemctl restart containerd
4.3.3、测试 kubectl

执行命令:kubectl get nodes 查看所有节点

4.4、master 安装pod网络插件

  • flannel插件

        kubectl apply -f kube-flannel.yml

# fnannel 安装缺失subnet.envwen文件
vi /run/flannel/subnet.env # 添加如下内容
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

#flannel网络插件时发现flannel一直处于CrashLoopBackOff状态
# kube-controller-manager.yaml增加参数
vi /etc/kubernetes/manifests/kube-controller-manager.yaml 
--allocate-node-cidrs=true
--cluster-cidr=10.244.0.0/16

4.5、加入node 节点

  • master操作
#查看节点
kubectl get pods

#定义node角色
kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node3 node-role.kubernetes.io/worker=worker

# 查看所有空间的节点
kubectl get ns 
kubectl get pods --all-namespaces
# 查看node节点日志
kubectl logs node-name  -n namespace

五、其他

k8s.gcr.io/pause:3.6拉取超时处理

docker pull rancher/pause:3.6

docker tag rancher/pause:3.6 k8s.gcr.io/pause:3.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值