MacOS M1芯片
VMWare Fusion
服务器信息:
hostname | 系统版本 | IP | 内存 | CPU | 硬盘 |
---|---|---|---|---|---|
node01-master | CentOS 8 | 192.168.153.128 | 2G | 2C | 30G |
node02 | CentOS 8 | 192.168.153.129 | 2G | 2C | 30G |
node03 | CentOS 8 | 192.168.153.130 | 2G | 2C | 30G |
# 查看系统版本
cat /etc/centos-release
# 查看内核版本
uname -sr
以下操作需要在每个节点都执行。
#使用 hostnamectl set-hostname设置主机名
hostnamectl set-hostname node01-master
vi /etc/hosts # 编辑hosts文件,配置域名映射
192.168.153.128 node01-master
192.168.153.129 node02
192.168.153.130 node03
# 关闭防火墙
systemctl stop firewalld
# 关闭开机自启
systemctl disable firewalld
# 查看防火墙状态
firewall-cmd --state
#将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
swapoff -a # 临时关闭,主机重启后k8s无法自动重启,需要重新关闭swap
vim /etc/fstab # 永久关闭
cat <| sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <| sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
Docker环境也需要在每个节点部署。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker
另外k8s 1.2版本以上需要修改native.cgroupdriver=systemd
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://iedolof4.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker安装完成,使用docker info
或者 docker version
命令进行验证:
在所有节点执行:
添加阿里的yum软件源,注意baseurl的地址是否是你虚拟机对应的版本
#添加阿里的yum软件源,这里需要注意baseurl的地址是否是你虚拟机对应的版本
# 以下为mac m1 CentOS8 对应的地址
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
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
网上有的文章在添加aliyum源的时候使用的是kubernetes-el7-x86_64
:(注意区分)
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
http://mirrors.aliyun.com/kubernetes/yum/repos/?spm=a2c6h.25603864.0.0.3e92274fROyPdV
在所有节点执行:
安装kubeadm、kubelet、kubectl
#安装k8s(注意版本号,后面的版本需要对应)
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
systemctl enable kubelet
仅在master
节点执行:
kubeadm初始化
kubeadm init \
--apiserver-advertise-address=192.168.153.128 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
#-–apiserver-advertise-address 集群通告地址(master内网) 注意修改为master节点的address
#–-image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
#–-kubernetes-version K8s版本,与上面安装的一致
#–-service-cidr 集群内部虚拟网络,Pod统一访问入口
#-–pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.153.128:6443 --token ms6617.5hbjusrd37ovnbh1 \
--discovery-token-ca-cert-hash sha256:1161e6266f482d5fdf436aa115a941657a2aee5ff0cc739d8c58adfc6a8441fb
按照安装完成的命令执行。
在master节点执行:
# 在主节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#如果是root用户
export KUBECONFIG=/etc/kubernetes/admin.conf
在node02
和node03
节点执行以下命令加入master
节点:
kubeadm join 192.168.153.128:6443 --token ms6617.5hbjusrd37ovnbh1 \
--discovery-token-ca-cert-hash sha256:1161e6266f482d5fdf436aa115a941657a2aee5ff0cc739d8c58adfc6a8441fb
token有效期为24小时,如果过期,需要重新创建token:
kubeadm token create --print-join-command
使用kubectl get nodes
或者kubectl get nodes -owide
命令进行验证:
在master节点执行:
wget https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f calico.yaml
# 查看运行状态
kubectl get pods -n kube-system
可能会出现卡在ImagePullBackOff
或者创建容器
等不成功的状态,都有可能是因为镜像没有下载来。
#可以使用kubectl describe pod -n kube-system podname 命令查看容器运行情况,如果是因为镜像下载失败,可以对应的集群节点使用docker pull命令将镜像下载下来
kubectl describe pod -n kube-system calico-kube-controllers-58f755f869-tjsb4
在node03
节点执行docker pull calico/kube-controllers:v3.23.3
命令,下载镜像。
kubernetes官方提供的可视化界面:https://github.com/kubernetes/dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
#type: ClusterIP 改为 type: NodePort
kubectl get svc -A |grep kubernetes-dashboard
https://192.168.153.129:32184/
注意是https协议。
如果是http协议会出现以下情况:
使用https协议打开出现以下页面:
然后创建访问账号:
#创建访问账号,准备一个yaml文件; vi dashaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
通过kubectl apply -f dashaccount.yaml
命令进行部署。
执行一下命令获得登录token:
#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
# 查看所有节点
kubectl get nodes
#查看集群服务器信息
kubectl get nodes -o wide
# 查看kube-system命名空间下的pod
kubectl get pods -n kube-system
#部署资源
kubectl apply -f calico.yaml
#删除部署
kubectl delete -f calico.yaml
#强制删除pod 命名空间为kube-system pod为name为coredns-545d6fc579-s2j64
kubectl delete pod coredns-545d6fc579-s2j64 -n kube-system --grace-period=0 --force
#查看所有名称空间 namespace简称ns
kubectl get ns
#创建名称空间
kubectl create ns 名称空间
#删除名称空间
kubectl delete ns 名称空间
#查看默认default名称空间下的应用
kubectl get pods
#监控查看Pod
kubectl get pod -w
#监控查看Pod
watch -n 1 kubectl get pods
#查看所有应用
kubectl get pods -A
#查看该名称空间下的应用
kubectl get pods -n 名称空间
#查看默认名称空间下更详细的应用信息
kubectl get pod -owide
# 查看所有pod使用的内存
kubectl top pod -A
#查看容器描述 默认是default命名空间
kubectl describe pod myk8snginx
kubectl describe pod -n ruoyi-cloud ry-cloud-mysql-0
# 查看Pod运行日志
kubectl logs mynginx
#进入容器
kubectl exec -it mynginx -- /bin/bash
kubectl exec -it redis -- redis-cli