企业微信公众号怎么开通,seo整站优化哪家专业,青海h5页面制作,乐wordpress1、前置知识点
1.1 生产环境可部署Kubernetes集群的两种方式
目前生产部署Kubernetes集群主要有两种方式#xff1a;
kubeadm
Kubeadm是一个K8s部署工具#xff0c;提供kubeadm init和kubeadm join#xff0c;用于快速部署Kubernetes集群。
二进制包
从github下载发行…1、前置知识点
1.1 生产环境可部署Kubernetes集群的两种方式
目前生产部署Kubernetes集群主要有两种方式
kubeadm
Kubeadm是一个K8s部署工具提供kubeadm init和kubeadm join用于快速部署Kubernetes集群。
二进制包
从github下载发行版的二进制包手动部署每个组件组成Kubernetes集群。
这里采用kubeadm搭建集群。
1.2 准备环境
服务器要求
建议最小硬件配置2核CPU、2G内存、20G硬盘服务器最好可以访问外网会有从网上拉取镜像需求如果服务器不能上网需要提前下载对应镜像并导入节点
软件环境 软件 版本 操作系统 CentOS7.9_x64 mini Docker 20-ce Kubernetes 1.26
服务器规划 角色 IP k8s-master 172.16.183.211 k8s-node1 172.16.183.212 k8s-node2 172.16.183.213 架构图 1.3 操作系统初始化配置【所有节点】
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭selinux
sed -i s/enforcing/disabled/ /etc/selinux/config # 永久
setenforce 0 # 临时# 关闭swap
swapoff -a # 临时
sed -ri s/.*swap.*/#/ /etc/fstab # 永久# 根据规划设置主机名
hostnamectl set-hostname hostname# 在master添加hosts
cat /etc/hosts EOF
172.16.183.211 k8s-master
172.16.183.212 k8s-node1
172.16.183.213 k8s-node2
EOF# 将桥接的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 --system # 生效# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
注意最好做一个crontab定时时间同步。 2. 安装Docker/kubeadm/kubelet【所有节点】
2.1 安装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
配置镜像下载加速器
cat /etc/docker/daemon.json EOF
{registry-mirrors: [https://b9pmyelo.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd]
}
EOFsystemctl restart docker
docker info
2.2 安装cri-dockerd
Kubernetes v1.24移除docker-shim的支持而Docker Engine默认又不支持CRI标准因此二者默认无法再直接集成。为此Mirantis和Docker联合创建了cri-dockerd项目用于为Docker Engine提供一个能够支持到CRI规范的桥梁从而能够让Docker作为Kubernetes容器引擎。
如图所示 wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
指定依赖镜像地址
vi /usr/lib/systemd/system/cri-docker.service
ExecStart/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-imageregistry.aliyuncs.com/google_containers/pause:3.7systemctl daemon-reload
systemctl enable cri-docker systemctl start cri-docker
2.3 添加阿里云YUM软件源
cat /etc/yum.repos.d/kubernetes.repo EOF
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
2.4 安装kubeadmkubelet和kubectl
由于版本更新频繁这里指定版本号部署
yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
systemctl enable kubelet
注意这里只设置kubelet开机启动具体启动操作是kubeadmin完成的不要在这里设置。
3. 部署Kubernetes Master
在172.16.183.211Master执行。
kubeadm init \--apiserver-advertise-address172.16.183.211 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.26.0 \--service-cidr10.96.0.0/12 \--pod-network-cidr10.244.0.0/16 \
--cri-socketunix:///var/run/cri-dockerd.sock \--ignore-preflight-errorsall
--apiserver-advertise-address 集群通告地址--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问这里指定阿里云镜像仓库地址--kubernetes-version K8s版本与上面安装的一致--service-cidr 集群内部虚拟网络Pod统一访问入口--pod-network-cidr Pod网络与下面部署的CNI网络组件yaml中保持一致--cri-socket 指定cri-dockerd接口如果是containerd则使用--cri-socket unix:///run/containerd/containerd.sock
初始化完成后最后会输出一个join命令先记住下面用。
拷贝kubectl使用的连接k8s认证文件到默认路径
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看工作节点
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane 20s v1.26.0
注由于网络插件还没有部署还没有准备就绪 NotReady先继续
参考资料
https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node 4. 加入Kubernetes Node
在172.16.183.212/213Node执行。
向集群添加新节点执行在kubeadm init输出的kubeadm join命令并手动加上--cri-socketunix:///var/run/cri-dockerd.sock
kubeadm join 172.16.183.211:6443 --token 8irnzc.h8pwnvd76xs3x4do \
--discovery-token-ca-cert-hash sha256:49addc7be82b33d9bdc81e6f0f092da16cfdf7157b9a2766fc157a1f8a3c3cc4 --cri-socketunix:///var/run/cri-dockerd.sock
注意这里要替换token、sha256改为新生成的。
5. 部署容器网络CNI
在172.16.183.211Master执行。
Calico是一个纯三层的数据中心网络方案是目前Kubernetes主流的网络方案。
下载YAML
wget https://docs.projectcalico.org/manifests/calico.yaml
下载完后还需要修改里面定义Pod网络CALICO_IPV4POOL_CIDR与前面kubeadm init的 --pod-network-cidr指定的一样。
修改完后文件后部署
kubectl apply -f calico.yaml
kubectl get pods -n kube-system
等Calico Pod都Running节点也会准备就绪。
6. 部署 Dashboard
Dashboard是官方提供的一个UI可用于基本管理K8s资源。
YAML下载地址
https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
课件中文件名是kubernetes-dashboard.yaml
默认Dashboard只能集群内部访问修改Service为NodePort类型暴露到外部
vi recommended.yaml
...
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443nodePort: 30001selector:k8s-app: kubernetes-dashboardtype: NodePort
...kubectl apply -f recommended.yaml
kubectl get pods -n kubernetes-dashboard
访问地址https://NodeIP:30001
创建service account并绑定默认cluster-admin管理员集群角色
# 创建用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrolecluster-admin --serviceaccountkubernetes-dashboard:dashboard-admin
# 获取用户Token
kubectl create token dashboard-admin -n kubernetes-dashboard
使用输出的token登录Dashboard。