1 Star 1 Fork 0

Soap/gulimall

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
k8s.txt 8.86 KB
一键复制 编辑 原始数据 按行查看 历史
Soap 提交于 2020-12-21 17:30 . k8s
##创建三个虚拟机:
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos/7"
# 设置虚拟机的主机名
node.vm.hostname="k8s-node#{i}"
# 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
# 设置主机与虚拟机的共享目录
# node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "k8s-node#{i}"
# 设置虚拟机的内存大小
v.memory = 4096
# 设置虚拟机的CPU个数
v.cpus = 4
end
end
end
end
####1)、Vagrant ssh XXX 进入系统之后
su root 密码为vagrant
vi /etc/ssh/shhd_config
修改 PasswordAuthentication yes/no
重启服务 service sshd restart
####2)、设置linux环境
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭 selinux:
sed -i 's/enforcing/disable/' /etc/selinux/config
setenforce 0
关闭 swap:
swapoff -a 临时
sed -ri 's/.*swap.*/#&/'/etc/fstab 永久
free -g 验证,swap必须为0;
添加主机名与IP对应关系
vi /etc/hosts
10.0.2.21 k8s-node1
10.0.2.23 k8s-node2
10.0.2.22 k8s-node3
hostnamectl set-hostname <newhostname>:指定新的hostname
su 切换过来
将桥接的IPv4流量传递到iptables的链:
cat> /etc/sysctl.d/k8s.conf<<EOF
net.bridge.brige-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
疑难问题:
遇见提示是只读的文件系统,运行如下命令
mount -o remount rw /
date 查看时间(可选)
yum install -y ntpdate
ntpdate time.windows.com 同步最新时间
####3)、设置网络,新建网卡,全局设定-》网络-》NET 网络-》添加网卡
##所有节点安装Docker、kubeadm、kubelet、kubectl
Kubernetes默认CRI(容器运行时)为Docker、因此先安装Docker
####1)、安装Docker
1---卸载系统之前的docker
sudo yum remove docker\
docker-client\
docker-client-latest\
docker-common\
docker-latest\
docker-latest-logrotate\
docker-logrotate\
docker-engine
2---安装Docker-CE
安装必须的依赖
sudo yum install -y yum-utils\
device-mapper-persistent-data\
lvm2
设置docker repo的yum位置
sudo yum-config-manager\
--add-repo\
https://download.docker.com/linux/centos/docker-ce.repo
安装docker,以及docker-cli
sudu yum install -y docker-ce docker-ce-di containerd.io
3---配置docker加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4---启动docker&设置docker开机自启
systemctl enable docker
####基础环境准备好,可以给三个虚拟机备份一下;为node3分配16g,剩下的3g。方便未来测试
####2)、添加阿里云yum源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enable=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
####3)、安装kubeadm、kubelet、kubectl
yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm=1.17.3 kubectl-1.17.3
systemctl enable kubelet
systemctl start kubelet
##部署k8s-master
####1)、master节点初始化
先运行 ./master_images.sh
$ kubeadm init\
--apiserver-advertise-address=10.0.2.21\
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers\
--kubernetes-version v1.17.3\
--service-cidr=10.96.0.0/16\
--pod-network-cidr=10.244.0.0/16
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里制定阿里云镜像仓库地址。可以手动
按照我们的images.sh先拉取镜像,
地址变为 registry.aliyuncs.com/google_containers 也可以。
科普:无类别域间路由(Calssless Inter-Domain Routing、CIDR)是一个用于给用户分配IP
地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
拉取可能失败,需要下载镜像。
运行完成提前复制:加入集群令牌
####2)、测试kubectl(主节点执行)
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 获取所有节点
目前master状态notready。等待网络加入完成即可
journalctl -u kubelet 查看kubelet日志
kubeadm join 192.168.56.100:6443 --token zlehsy.gh6i3rlmu1k7azwa\
--discovery-token-ca-cert-hash
(token)
token过去怎么办
Kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
kubeadm join --token (token)
执行watch kubectl get pod -n kube-sysctl wide 监控pod进度
等3-10分钟,完全都是running以后使用kubectl get nodes 检查状态
##安装pod网络插件(CNI)
$ kubectl apply -f\
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
以上地址可能被墙,大家获取上传我们下载好的flannel.yml运行即可,同时flannel.yml中
制定的images访问不到可以去docker hub 找一个
wget yml的地址
vi 修改yml 所有amd64的地址都修改了即可
等待大约3分钟
kubectl get pods -n kube-system 查看指定名称空间的pods
kubectl get pods -all-namespace 查看所有名称空间的pods
$ ip link set cni0 down 如果网络出现问题,关闭cni0,重启虚拟机继续测试
执行watch kubectl get pod -n kube-system -o wide 监控pod进度
等3-10分钟,完全都是running以后继续
##入门操作kubernetes集群
1)、部署一个tomcat
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
kubectl get pods -o wide 可以获取到tomcat信息
2)、补录nginx访问
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
Pod的80映射容器的8080;service会代理Pod的80
3)、动态扩容测试
kubectl get deployment
应用升级 kubectl set image(--help查看帮助)
扩容:kubectl scale --replicas=3 deployment tomcat6
扩容了多份,所有无论访问那个node的制定端口,都可以访问到tomcat6
4)、以上操作的yaml获取
参照k8s细节
5)、删除
Kubectl get all
kubectl delete deploy/nginx
kubectl delete service/nginx-service
流程;创建deployment会管理replicas,replicas控制pod数量,有pod故障会自动拉起
新的pod
##安装默认dashboard
####1)、部署dashboard
##K8S细节:
####详情参照官网
####格式化输出:Yaml模板
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name:nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
####1)、Pod是什么,Controller是什么
详细参照官网
Pod和控制器
控制器可以为您创建和管理多个Pod,管理副本和上线,并在集群范围内提供自修复能力。
例如:如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换Pod。
包含一个或多个Pod的控制器一些实例包括:
Deployment
StatefulSet
DaemonSet
控制器通常使用您提供的Pod模板来创建它所负责的Pod
####2)、Service的意义
1、部署一个nginx
kubectl create deployment nginx --image=nginx
2、暴露nginx访问
kubectl expose deployment nginx --port=80 --type=NodePort
统一应用访问入口;
Service管理一组Pod。
防止Pod失联(服务发现)、定义一组Pod的访问策略
现在Service我们使用NodePort的方式暴露,这样访问每一个节点的端口,都可以访问到这
个Pod,如果节点宕机,就会出现问题
####3)、Ingress
通过Service发现Pod进行关联。基于域名访问。
通过Ingress Controller发现Pod负载均衡
支持TCP/UDP4层负载均衡和HTTP7层负载均衡
(直接运行Ingress-Controller.yaml)
步骤:1)、部署Ingress Controller。2)、创建Ingress规则
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web
spec:
rules:
- host: tomcat6.atguigu.com
http:
paths:
- backend:
serviceName: tomcat6
servicePort: 80
如果在部署了tomcat8;看效果;
kubectl create deployment tomcat8 --image=tomcat:8.5.51-jdk8
kubectl expose deployment tomcat8 --port=88 --target-port=8080 --type=NodePort
kubectl delete xxx 删除制定资源
随便配置域名对应哪个节点,都可以访问tomca6、8;因为所有节点的ingress-controller
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/SoapLiu/gulimall.git
git@gitee.com:SoapLiu/gulimall.git
SoapLiu
gulimall
gulimall
master

搜索帮助