昆明网站建设锐网,ui培训设计,邯郸手机网站建设,域名过期的Wordpress文章目录 kubeadm部署环境初始化所有的节点安装Docker所有节点安装kubeadm#xff0c;kubelet和kubectl初始化方法一#xff0c;配置文件初始化方法二#xff0c;命令初始化 网络插件node节点总结 证书过期方法一方法二总结 部署Dashboard kubeadm部署
环境初始化
###所有… 文章目录 kubeadm部署环境初始化所有的节点安装Docker所有节点安装kubeadmkubelet和kubectl初始化方法一配置文件初始化方法二命令初始化 网络插件node节点总结 证书过期方法一方法二总结 部署Dashboard kubeadm部署
环境初始化
###所有节点关闭防火墙规则关闭selinux关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i s/enforcing/disabled/ /etc/selinux/configiptables -F iptables -t nat -F iptables -t mangle -F iptables -X#交换分区必须要关闭
swapoff -a
sed -ri s/.*swap.*/#/ /etc/fstab
#永久关闭swap分区符号在sed命令中代表上次匹配的结果#加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o ^[^.]*);do echo $i; /sbin/modinfo -F filename $i /dev/null 21 /sbin/modprobe $i;done##修改主机名
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02##所有节点修改hosts文件
vim /etc/hosts
192.168.242.72 master01
192.168.242.73 node01
192.168.242.74 node02#调整内核参数cat /etc/sysctl.d/k8s.conf EOF
#开启网桥模式可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv61
net.ipv4.ip_forward1
EOFcat /etc/sysctl.d/k8s.conf EOF
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv6.conf.all.disable_ipv61
net.ipv4.ip_forward1
EOFsysctl --system所有的节点安装Docker
###安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.iosystemctl start docker.service
systemctl enable docker.service ##修改配置文件和镜像加速mkdir -p /etc/dockertee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://ysmprsek.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd],log-driver: json-file,log-opts: {max-size: 500m, max-file: 3}
}
EOFsystemctl daemon-reload
systemctl restart docker所有节点安装kubeadmkubelet和kubectl
###定义kubernetes源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
EOFyum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15###开机自启kubelet
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在即底层是以容器方式运行所以kubelet必须设置开机自启###查看相关软件的版本
yum list kubeadm-1.20*初始化
方法一配置文件初始化
###master01
###查看初始化需要的镜像
kubeadm config images list --kubernetes-version 1.20.15##生成 k8s 初始化配置文件
mkdir /opt/k8s
kubeadm config print init-defaults /opt/k8s/kubeadm-config.yaml### kubeadm-config.yaml 文件解释---6行---
ttl: 24h0m0s ##证书有效期默认24h---12行---
advertiseAddress: 192.168.242.72 ##master的IP地址---15行---
criSocket: /var/run/dockershim.sock ##指定底层docker运行时---24行---
certificatesDir: /etc/kubernetes/pki ##自动生成的证书和私钥文件的位置---32行---
imageRepository: k8s.gcr.io ##镜像仓库
修改镜像成库为 registry.cn-hangzhou.aliyuncs.com/google_containers---34行---
kubernetesVersion: v1.20.15 #指定kubernetes版本号---37行---
serviceSubnet: 10.96.0.0/16 #指定service网段添加
podSubnet: 10.244.0.0/16 #指定pod网段10.244.0.0/16用于匹配flannel默认网段#末尾再添加以下内容---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
#把默认的kube-proxy调度方式改为ipvs模式###在线拉取镜像
kubeadm config images pull --config /opt/k8s/kubeadm-config.yaml###初始化 master
kubeadm init --config/opt/k8s/kubeadm-config.yaml --upload-certs | tee kubeadm-init.log#--upload-certs 参数可以在后续执行加入节点时自动分发证书文件
#tee kubeadm-init.log 用以输出日志方法二命令初始化
kubeadm init \
--apiserver-advertise-address192.168.242.72 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-versionv1.20.15 \
--service-cidr10.96.0.0/16 \
--pod-network-cidr10.244.0.0/16 \
--token-ttl0初始化集群需使用kubeadm init命令可以指定具体参数初始化也可以指定配置文件初始化。
可选参数--apiserver-advertise-addressapiserver
通告给其他组件的IP地址一般应该为Master节点的用于集群内部通信的IP地址0.0.0.0表示节点上所有可用地址--apiserver-bind-portapiserver的监听端口默认是6443--cert-dir通讯的ssl证书文件默认/etc/kubernetes/pki--control-plane-endpoint控制台平面的共享终端可以是负载均衡的ip地址或者dns域名高可用集群时需要添加--image-repository拉取镜像的镜像仓库默认是k8s.gcr.io--kubernetes-version指定kubernetes版本--pod-network-cidrpod资源的网段需与pod网络插件的值设置一致。Flannel网络插件的默认为10.244.0.0/16Calico插件的默认值为192.168.0.0/16--service-cidrservice资源的网段--service-dns-domainservice全域名的后缀默认是cluster.local--token-ttl默认token的有效期为24小时如果不想过期可以加上 --token-ttl0 这个参数方法二初始化后需要修改 kube-proxy 的 configmap开启 ipvskubectl edit cm kube-proxy -nkube-system---44行---
修改mode: ipvs网络插件
###查看 kubeadm-init 日志
cd /opt/k8s
less kubeadm-init.log##kubernetes的工作目录
cd /etc/kubernetes/
manifests包含所有的组件的启动参数
pki包含所有的证书文件和私钥文件###缺少 kubeconfig 配置文件无法使用 kubectl
kubectl get nodesmkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config##在初始化结尾由命令指示###安装 CNI网络插件
##上传 flannel-v0.21.5.zip 到 /opt/k8sunzip flannel-v0.21.5.zip
docker load -i flannel.tar
docker load -i flannel-cni-plugin.tar[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RjQPbnaV-1691313345677)(E:\Typora\images\image-20230806160115314.png)]
##移动系统创建的cni目录并手动创建
cd /opt/
mv cni/ cni_bak
mkdir -p /opt/cni/bin##解压配置文件
tar xf /opt/k8s/cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin/##安装插件
cd /opt/k8s
kubectl apply -f kube-flannel.yml##查看nodes的状态
kubectl get nodes###修改 kube-controller-manager.yaml 和 kube-scheduler.yaml 配置文件cd /etc/kubernetes/manifestsvim kube-controller-manager.yaml
注释掉 26行 - --port0vim kube-scheduler.yaml
注释掉 19行 - --port0###重启 kubelet
systemctl restart kubelet##查看组件状态
kubectl get csnode节点
###先导入 flannel的两个镜像
scp flannel.tar flannel-cni-plugin.tar 192.168.242.73:/opt/
scp flannel.tar flannel-cni-plugin.tar 192.168.242.74:/opt/docker load -i flannel.tar
docker load -i flannel-cni-plugin.tar###根据初始化结果最后的命令来执行
##在每个node节点执行就行kubeadm join 192.168.242.72:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:fb2bccc45966f85442c9fb675cbf04c873c480f9b25da1617d65147911ac0c36###查看nodes节点状态
kubectl get nodes总结
kubeadm init在使用kubeadm方式安装K8S集群时可根据初始化配置文件或者配置参数快速的初始化生成一个K8S的master管理平台kubeadm join根据kubeadm init初始化的提示信息快速的将一个节点作为node节点或者其它的master节点加入到K8S集群当中 所有节点进行初始化安装docker引擎和kubeadm kubelet kubectl生成集群初始化配置文件并进行修改使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点安装CNI网络插件flannel、calico等在其他节点使用kubeadm join将节点以node或者master角色加入K8S集群
证书过期
方法一
###使用 kubeadm 升级集群自动轮换证书kubeadm upgrade apply --certificate-renewal v1.15.0方法二
使用 kubeadm 手动生成并替换证书###先备份并移走证书和配置文件
mkdir /etc/kubernetes.bak
cp -r /etc/kubernetes/pki/ /etc/kubernetes.bak
cp /etc/kubernetes/*.conf /etc/kubernetes.bak##重新生成新的证书
kubeadm alpha certs renew all --config kubeadm.yaml###重新生成配置文件kubeadm alpha kubeconfig user --client-nameadminkubeadm alpha kubeconfig user --org system:masters --client-name kubernetes-admin /etc/kubernetes/admin.confkubeadm alpha kubeconfig user --client-name system:kube-controller-manager /etc/kubernetes/controller-manager.confkubeadm alpha kubeconfig user --org system:nodes --client-name system:node:$(hostname) /etc/kubernetes/kubelet.confkubeadm alpha kubeconfig user --client-name system:kube-scheduler /etc/kubernetes/scheduler.conf###移走 //etc/kubernetes/manifests 的文件
##过一段时间 在移回来重新生成 pod或者kubectl delete pods -n 指定命名空间 ##挨个重启比较慢总结
kubeadm 部署的K8S集群更新证书 备份老证书和kubeconfig配置文件 mkdir /etc/kubernetes.bak cp -r /etc/kubernetes/pki/ /etc/kubernetes.bak cp /etc/kubernetes/*.conf /etc/kubernetes.bak重新生成证书 kubeadm alpha certs renew all --configkubeadm.yaml重新生成kubeconfig配置文件 kubeadm init phase kubeconfig all --config kubeadm.yaml重启kubelet和其他K8S组件的Pod容器 systemctl restart kubelet
mv /etc/kubernetes/manifests /tmp mv /tmp/*.yaml /etc/kubernetes/manifests
部署Dashboard
##master01节点
###上传 配置文件 recommended.yaml
##安装
kubectl apply -f recommended.yaml##查看安装状态
kubectl get pods -A##创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system##查看创建的用户
kubectl get sa -n kube-system###给账户授权
kubectl create clusterrolebinding dashboard-admin --clusterrolecluster-admin --serviceaccountkube-system:dashboard-admin##获取用户的 token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1})#使用输出的token登录Dashboard
https://192.168.242.72:30001