systemctl stop firewalld systemctl disable firewalld2. 关闭selinux
#永久 sed -i 's/enforcing/disabled/' /etc/selinux/config #临时 setenforce 03. 关闭swap
#永久 sed -ri 's/.*swap.*/#&/' /etc/fstab #临时 swapoff -a4. 根据规划设置主机名
hostnamectl set-hostname5. 根据规划,在Master添加hosts解析
cat >> /etc/hosts << EOF 10.10.1.100 k8s-master1 10.10.1.102 k8s-node1 10.10.1.103 k8s-node2 EOF6. 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF #刷新配置 sysctl --system7. 时间同步
yum install -y ntpdate ntpdate time.windows.com #添加到定时任务 cat >> /var/spool/cron/root <四. 开始部署K8s集群 1. 安装Docker/kubeadm/kubelet【所有节点】 1.1. 安装Docker#time sync > */5 * * * * /usr/bin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 > EOF
#获取阿里云的docker yum软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo #安装Docker yum -y install docker-ce-20.10.6 #启动并设置开机自启 systemctl enable docker && systemctl start docker1.2. 配置阿里云镜像下载加速
#创建文件存放目录 mkdir -p /etc/docker #创建daemon.json(可以换成自己的阿里云镜像加速地址) cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://n52tl92t.mirror.aliyuncs.com"] } EOF #重启Docker systemctl restart docker #查看docker信息 docker info1.3. 添加阿里云的kubernetes 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 EOF1.4. 安装kubeadm,kubelet和kubectl
注:由于版本更新频繁,这里指定版本号部署
#安装kubeadm,kubelet和kubectl yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0 #将kubelet加入开机自启 systemctl enable kubelet2. 部署Kubernets Master【Master节点】 2.1. Kubeadm初始化master节点
kubeadm init --apiserver-advertise-address=10.10.1.100 --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:集群通告地址
–image-repository:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
–kubernetes-version:K8s版本,与上面安装的一致
–service-cidr:集群内部虚拟网络,Pod统一访问入口
–pod-network-cidr:Pod网络,,与下面部署的CNI网络组件yaml中保持一致
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config3. 添加Node 3.1. 生成token
注:默认token有效期为24小时,过期重新生成即可
kubeadm token create --print-join-command3.2. 添加Node
注:当发现kubeadm join失败时,使用kubeadm reset清空join *** 作,然后重新初始化。
kubeadm join 10.10.1.100:6443 --token jve9md.h6tly2r9sksi9fs5 --discovery-token-ca-cert-hash sha256:43884795837fc2527ba8c05ca33e28aa7c998ef5e61b75a43ec5a170a431506a3.3. 在master节点查看节点信息
注:由于网络插件还没有部署,状态为NotReady
[root@k8s-master1 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master1 NotReady control-plane,master 31m v1.21.0 k8s-node1 NotReady4. 部署calico网络插件 4.1. 解决镜像问题【所有节点】6m26s v1.21.0 k8s-node2 NotReady 6m22s v1.21.0 [root@k8s-master1 ~]#
docker pull registry.aliyuncs.com/google_containers/coredns:1.8.0 docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.04.2. 部署calico网路插件【Master节点】
说明:等Calico Pod都Running,节点就会是Ready
#获取calico yaml wget https://docs.projectcalico.org/manifests/calico.yaml #部署 kubectl apply -f calico.yaml #查看calico pod状态 kubectl get pods -n kube-system5. 测试kubernetes集群【Master节点】
说明:在Kubernetes集群中创建一个pod,验证是否正常运行。
访问地址:http://NodeIP:Port,例如http://10.10.1.102:32468
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pod,svc五. 部署Dashboard【Master节点】 1.部署Dashboard
Dashboard是官方提供的一个UI,可用于基本管理K8s资源。
访问地址:https://NodeIP:30001
#获取Dashboard yaml wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml -O kubernetes-dashboard.yaml #默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部。 vim kubernetes-dashboard.yaml ... spec: ports: - port: 443 targetPort: 8443 nodePort: 30001 selector: k8s-app: kubernetes-dashboard type: NodePort ... #部署Dashboard kubectl apply -f recommended.yaml #查看Dashboard pod状态 kubectl get pods -n kubernetes-dashboard2. 创建service account并绑定默认cluster-admin管理员集群角色
# 创建用户 [root@k8s-master1 ~]# kubectl create serviceaccount dashboard-admin -n kube-system # 用户授权 [root@k8s-master1 ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin # 获取用户登录Token [root@k8s-master1 ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print }')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)