Windows虚拟化3台Linux虚拟机 —- CentOS操作系统
基于kubeadm 方式
/etc/hosts
127.0.0.1 k8s-x localhost
::1 k8s-x localhost
192.168.216.7 k8s-1
192.168.216.6 k8s-2
192.168.216.8 k8s-3
基础安装
# 修改IP文件vi /etc/sysconfig/network-scripts/ifcfg-enp0s3ONBOOT=no ---> 修改为yes# 重启网络service network restart# 安装网络工具yum install -y net-tools wget telnet# 查看IPifconfig# 修改hostnamesudo hostnamectl set-hostname k8s-1reboot# 配置/etc/hosts192.168.216.7 k8s-1192.168.216.6 k8s-2192.168.216.8 k8s-3# 关闭swap分区sudo swapoff -a# yum更新、同步时间yum updateyum install -y ntpdatentpdate ntp.aliyun.com# 确保虚机不会自动suspendsudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target# 安装dockerwget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce# 安装kubelet、kubectlcat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearchenabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubelet kubeadm kubectlEOF# 将 SELinux 设置为 permissive 模式(相当于将其禁用)sudo setenforce 0sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/configsudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetessudo systemctl enable --now kubeletvi /etc/sysconfig/dockerOPTIONS = 改为如下:--selinux-enabled=falsesudo systemctl daemon-reload && sudo systemctl restart dockersudo sed -i '/ swap / s/^/#/' /etc/fstabrebootecho "1">/proc/sys/net/bridge/bridge-nf-call-iptablesecho "1">/proc/sys/net/bridge/bridge-nf-call-ip6tablesyum install bash-completion -ysource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)
Master节点
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=cri --control-plane-endpoint "192.168.216.7:6443" --apiserver-advertise-address=192.168.216.7mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl get nodesmkdir -p /opt/k8swget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlvi kube-flannel.yml,找到行“--kube-subnet-mgr”,在其下增加如下一行:“- --iface=enp0s8”(用你的实际网卡名替换enp0s8)kubectl apply -f ./kube-flannel.yml# 查看安装状态kubectl get nodeskubectl get pods --all-namespaces# 安装helmcd /optwget https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gztar -zxvf helm-v3.7.1-linux-amd64.tar.gzcp linux-amd64/helm /usr/local/binhelm version# 添加仓库helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartshelm repo add aliyun https://apphub.aliyuncs.com/helm repo add bitnami https://charts.bitnami.com/bitnami/helm repo add azure https://mirror.azure.cn/kubernetes/charts/# 安装 kubernetes-dashboardhelm install kubernetes-dashboard aliyun/kubernetes-dashboard -n kube-system#重装echo y | kubeadm resetrm -rf /var/lib/kubeletrm -rf /etc/kubernetesrm -rf /root/.kube/*
Worker节点
kubeadm join 192.168.216.7:6443 --token 10bgpq.vrdm5ytnx880hxjm \--discovery-token-ca-cert-hash sha256:56381f3d0f71bc14d7fd7c04600a1280fce846110faa88cb3d717b571318dcf1scp /etc/kubernetes/admin.conf root@192.168.216.6:/etc/kubernetes/admin.confecho "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profilesource ~/.bash_profilekubectl label node k8s-2 node-role.kubernetes.io/worker=worker
测试
# 安装nginxkubectl create deployment nginx --image=nginx# 创建servicekubectl expose deployment nginx --port=80 --type=NodePort# 查看端口kubectl get pods,svcNAME READY STATUS RESTARTS AGEpod/nginx-5c7588df-hrhfh 1/1 Running 0 2m16sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h6mservice/nginx NodePort 10.97.240.92 <none> 80:30054/TCP 23s
清除测试环境
echo y | kubeadm resetsystemctl stop kubeletsystemctl stop dockerrm -rf /var/lib/cni/rm -rf /var/lib/kubelet/*rm -rf /etc/cni/rm -rf /etc/kubernetesrm -rf /root/.kube/*ifconfig cni0 downifconfig flannel.1 downifconfig docker0 downip link delete cni0ip link delete flannel.1systemctl restart kubeletsystemctl restart docker
