学院网站建设工作会议,传智黑马培训机构,关键词优化步骤简短,阿里云服务器配置1.k8s kubernetes来自希腊语舵手,google, 8是ubernete 1.管理docker容器 go写的(并发) 2.用于微服务 3.cncf云原生基金会 2.mater(管理节点)和nodes(微服务节点)
3.部署 1.minikube kind官网在线测试语句 2.kubeadm(官方)(安装比较方便 添加) 3.github下载二进制包 4.yum(老) …1.k8s kubernetes来自希腊语舵手,google, 8是ubernete 1.管理docker容器 go写的(并发) 2.用于微服务 3.cncf云原生基金会 2.mater(管理节点)和nodes(微服务节点)
3.部署 1.minikube kind官网在线测试语句 2.kubeadm(官方)(安装比较方便 添加) 3.github下载二进制包 4.yum(老) 5.大神封装的环境 6.买云服务商提供的 阿里云 4.kubeadm cent7 2g2coreinteract network between two nodes(download flannel.yum file connect network)forbid swap areas ,fireworkxshell 查看—撰写–send cmd at the same timekubelet(manage POD and container,in every node of cluster ) kubeadm(init cluster) kubectl(client can connect it ) 5.蓝绿发布 预发布(nginx 摘一台机器发布,其他其它的可以正常运行,然后再摘除运行)
6.!!!牛 linux插件直接上传选择的文件 yum install lrzsz -y rz #upload filesz #download file7.部署过程 1.关闭防火墙和selinux和swap(k8s为了提供性能关闭虚拟内存) mater和nodes同时配置 systemctl stop firewalldsystemctl disable firewalldsed -i s/enforcing/disabled/ /etc/selinux/config #永久
setenforce 0 #临时close swapsed -ri s/.*swap.*/#/ /etc/fstab #永久
swapoff -a #临时//改host文件方便访问cat /etc/hosts EOF192.168.192.100 k8smaster192.168.172.101 k8snodeEOF//改k8s,让网络生效配置文件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.com2.安装docker19 mater和nodes同时配置 yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install docker-ce-19.03.13 -y//改docker加速配置vim /etc/docker/daemon.json{
registry-mirrors: [https://gg3gwnry.mirror.aliyuncs.com]
}//启动服务systemctl enable docker.service//k8s阿里源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//安装yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y//启动服务systemctl enable kubelet.service//查看服务和版本yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectlkubelet --version3.master节点执行init命令 会生成join命令 kubeadm init --apiserver-advertise-address192.168.172.134 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr10.96.0.0/12 --pod-network-cidr10.244.0.0/164.master复制配置文件 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 nodes5.join命令如果被重复执行,必须删除节点重启node节点 //master生成命令,给node执行join,node不用init
//坑!!! 主节点的 /etc/kubernetes/admin.conf 一定要复制到node 不然not connection
//坑hostname作为k8s的简单名,不能重复 ,用nmtui修改
//坑 删除“$HOME/.kube/config”文件并执行kubeadm reset命令方可解除 ,(出现各种配置文件和端口占用)//坑!!!//查看master init生成的join命令kubeadm token create --print-join-command //删除节点kubectl drain node1 --delete-local-data --force --ignore-daemonsetskubectl delete nodes node1//重新加入节点
//disabled_plugins []//必须重启节点kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
systemctl start docker
systemctl start kubelet6.从节点执行master生成的join命令 kubeadm join 192.168.172.132:6443 --token wa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8 7.节点状态都是notready(坑,节点重启也要重新提交网络)(可以打通master和node内部访问的端口),要在master配置网络(其实都可以,apply上去就好了) (重启只要主节点还在,就会重新部署从节点的pod) wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml//等待片刻...,发现pod flannelkubectl get nodes
8.pod 一个可运行1/多个docker容器
9.k8s部署容器化应用nginx 打jar/war包 写Dockerfile生成镜像 kubectl create deployment nginx --image镜像名,暴露端口 镜像运行在pod中 //下面重复启动如何删除节点//部署nginx,通过docker间接创建容器看到running,可能在不同容器运行//暴露端口//查看控制节点,和子节点的状态, 暴露节点的服务kubectl get deploykubectl get pod //或者podskubectl get services//生成节点kubectl delete deployment nginx //pod//默认在default namespace创建kubectl create deployment nginx --imagenginxkubectl expose deployment nginx --port80 --typeNodePortkubectl get pod,svc#部署tomcat
kubectl create deployment tomcat --imagetomcatkubectl expose deployment tomcat --port8080 --typeNodePort //运行springboot项目!!!,记得先测试jar包成功,不然也是会报PullErr的 //写Dockerfile文件
FROM openjdk:8-jdk
VOLUME /tmp
ADD target/demo.jar app.jar
ENTRYPOINT [java,-Djava.security.egdfile:/dev/./urandom,-jar,/app.jar]//打包为镜像
docker build -t 38-springboot-k8s-1.0.0-jar .//spingboot试运行,可以空运行生成yaml文件,然后提交yaml到k8s运行
kubectl create deployment springboot-k8s --image38-springboot-k8s-1.0.0-jar --dry-runclient -o yaml deploy.yaml
//改yaml在本地拉取,默认远程拉取,不行包PullErr错误
vi deploy.yaml文件里面container镜像从本地拉取imagePullPolicy: Never
//提交到k8s
kubectl apply -f deploy.yaml
//暴露端口
kubectl expose deployment springboot-k8s --port8080 --typeNodePort
kubectl get pod,svc//访问从内:外10.k8s dashboard 使用页面管理 //提交文件到k8s拉镜像
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yamlkubectl apply -f recommended.yaml//文件修改配置文件里,可以用内部修改配置文件!!!(get pod无法看到已经启动的端口)kubectl -n kubernetes-dashboard edit service kubernetes-dashboard//生成token复制到访问页面dashboardkubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrolecluster-admin --serviceaccountkube-system:dashboard-adminkubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1})11.3种端口 nodePort向外暴露的端口 // 优点 :type:NodePort可以暴露端口,yaml有写不用写语句 nodeport指定端口 //不足: 1.一个服务一个端口使用2.只能使用30000-32767端口 3.如果虚拟机ip变化,需要人工处理(ip被写进配置了) targetPort 容器的端port 集群服务之间内部的端口 12.ingress入口(生产使用,不是内置的) 相当于网关,代替nodePort直接暴露关机端口可能变化 //有多种方式安装,我们使用拉取 nginx的方式 //下载deploy.yuml文件,改image的地址 wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml spec:329 hostNetwork: true //添加 330 dnsPolicy: ClusterFirst331 containers:332 - name: controller333 image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.33.0 //修改334 imagePullPolicy: IfNotPresent//rule.yaml用于配置路由的规则,比如外面要访问到www.abc.com才能直接访问到内部80nginx端口apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: k8s-ingress
spec:rules:- host: www.abc.comhttp:paths:- pathType: Prefixpath: /backend:service:name: nginxport:number: 80 kubectl apply -f rule.yaml//如果之前存在kubectl delete ing k8s-ingress//查看配置的规则,记住要看规则的地址,客户端通过域名和ip同时访问服务器,然后通过ingress自动映射到pod的内部端口80//要在规则配置容器的内部端口才能访问!!! kubectl get ingkubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
//windows模拟访问到C:\Windows\System32\drivers\etc\hosts添加192.168.192.100 www.abc.com
//提交的任务如果有错误可以 kubectl delete servive/deploy/pod xx//在客户端访问www.abc.com会跳到nginx页面13.部署springcloud项目 //k8s部署无状态访问(静态数据) pod删除掉数据也保存下来没有影响下一次部署, euraka是有状态访问,影响灰度发布, 数据库会动态增加数据 //!!!到工作节点上传jar和Dockerfile //先部署提供者和消费者,再部署网关,在加ingress(rule) //和springboot流程一致,增加了ingress //查看容器日志
kubectl logs -f xxxpods//deploy是controller的类型,还可以部署定时任务…
14.动态扩容缩容 //改yaml的replicate的数量,注册中心会知道注册了多少台服务器 //如果在运行,更新配置文件 vi deploy.yaml文件里面container镜像从本地拉取//修改集群数spec:replicas: 2kubectl apply -f deploy.yaml