找到
####远程管理工作节点
回到worker2
worker节点不能管理集群吗? 不,他可以
1,将管理工具复制到worker master下执行scp刚才执行过了
2,生成管理员证书
颁发admin证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin3,创建kubeconfig文件 (1)设置集群参数
kubectl config set-cluster kubernetes --server=https://192.168.1.106:6443 --certificate-authority=ca.pem --embed-certs=true --kubeconfig=config(2)设置客户端认证参数
kubectl config set-credentials cluster-admin --certificate-authority=ca.pem --embed-certs=true --client-key=admin-key.pem --client-certificate=admin.pem --kubeconfig=config(3)设置上下文参数
kubectl config set-context default --cluster=kubernetes --user=cluster-admin --kubeconfig=config kubectl config use-context default --kubeconfig=configcat config可以看到秘钥
(4)将生产的config文件发送到worker节点【master执行】
scp config root@k8s-node2:/root/
(5)切换到worker2节点
可以看到config文件
mv /root/config /root/.kube/######这个文件是所有文件中最重要的。。。妥善保管
先配置k8s-master2集群
1)初始化服务器
[root@k8s-master2 ~]# hostnamectl set-hostname k8s-master2 [root@k8s-master2 ~]# systemctl stop firewalld [root@k8s-master2 ~]# systemctl disable firewalld [root@k8s-master2 ~]# getenforce 0 [root@k8s-master2 ~]# vim /etc/selinux/config [root@k8s-master2 ~]# [root@k8s-master2 ~]# swapoff -a [root@k8s-master2 ~]# vim /etc/fstab [root@k8s-master2 ~]# vim /etc/hosts [root@k8s-master2 ~]# yum install chrony -y [root@k8s-master2 ~]# vim /etc/chrony.conf [root@k8s-master2 ~]# systemctl restart chronyd [root@k8s-master2 ~]# systemctl enable chroynd [root@k8s-master2 ~]# systemctl enable chronyd [root@k8s-master2 ~]# [root@k8s-master2 ~]# chronyc sources安装k8s组件 为了简单,从master1上复制配置好的k8s组件
[root@k8s-master1 ~]# scp -r /opt/etcd/ root@k8s-maste2:/opt/ [root@k8s-master1 ~]# scp -r /opt/kubernetes root@k8s-master2:/opt/ [root@k8s-master1 ~]# cd /usr/lib/systemd/system [root@k8s-master1 system]# scp kube-apiserver.service kube-controller-manager.service kube-scheduler.service root@k8s-master2:/usr/lib/systemd/system [root@k8s-master1 system]# scp /bin/kubectl root@k8s-master2:/bin/ 在master2上修改apiserver的配置文件 [root@k8s-master2 ~]# vi /opt/kubernetes/cfg/kube-apiserver.conf 修改两行:分别制定当前节点自己监听的IP --bind-address=192.168.31.64 \ --advertise-address=192.168.31.64 \ 启动master2的服务了 [root@k8s-master2 ~]# systemctl daemon-reload [root@k8s-master2 ~]# systemctl restart kube-apiserver [root@k8s-master2 ~]# systemctl restart kube-controller-manager [root@k8s-master2 ~]# systemctl restart kube-scheduler [root@k8s-master2 ~]# systemctl enable kube-apiserver [root@k8s-master2 ~]# systemctl enable kube-controller-manager [root@k8s-master2 ~]# systemctl enable kube-scheduler 检查是否启动成功 [root@k8s-master2 ssl]# ps aux | grep kube [root@k8s-master2 ssl]# kubectl get nodes 分别在master1和master2上安装 yum install -y keepalived haproxy vi /etc/haproxy/haproxy.cfg再修改
vi /etc/keepalived/keepalived.confrouter_id 必须为服务名 virtual_ipaddress配置backend的vip端口。也就是master2的
master2同理 只是加一个nopreempt
devops python docker+k8s git+jenkins
k8s docker docker 三剑客(compose,swam、machine)
pod 与 pod控制器 一个pod中是一个或者多个容器 pod控制器是用来控制、管理pod的数量、状态
service 由于pod的地址会发生改变,通过service 可以为pod提供一个统一的访问入口
整个k8s集群的service与pod之间的关系
####kubectl的使用创建development
查看pod状态
没有启动。使用命令查看此镜像
如果无法启动镜像创建容器就 在工作节点中
systemctl daemon-reload systemctl restart docker systemctl restart kubelet systemctl restart kube-proxy这样算拉下来了
创建nginx镜像
查看被调度到了哪个节点
查看该节点剩余空间
dishboard使用
第三种创建容器方式
效果跟图形化界面创建一样。建议用第二种方式创建容器
这个报错是templete那里单词写错,还有spec
kubectl get 资源类型 kubectl describe 资源类型 kubectl logs 显示pod中的容器中运行过程中产生的日志信息 kubectl exec -it pod对象 /bin/sh
资源类型: node pod service deployment ns ....查看有哪些名称空间
指定查看哪一个名称空间的
查看所有名称空间的pod
最常用的最全的pod命令 describe
默认下去default找。如果是其他名称空间则需 指定 -n 名称空间
进入容器的方式
发布应用1,用service来发布服务
port:pod和service通信的端口 nodePort:是客户访问的端口 targetPort:service转发客户访问数据包到pod的端口
创建容器
kubectl apply -f ngx_svc.yml查看服务
kubectl get serviceworker节点的任意节点访问32002端口都可以访问到nginx
kuboard对于service的配置
专门设置端口的
启动更多的服务就是这里的值改大
图形化界面也可以实现弹性伸缩
敏捷开发之滚动更新多个容器的依次变化
可以看到nginx镜像版本是1.8
如何实现滚动更新
然后就开始滚动更新了
kuboard滚动更新
将一个Java 项目迁移到k8s
物理机交付。。。开发交付的是源码。。。。而k8s环境下交付的是镜像
1,准备一个mysql的服务器 将这两个tar包放到root下
运行环境镜像。。。。。是那个tomcat-base-images.tar.gz
把运行环境镜像放到所有的节点上
执行docker命令导入tar包
将java代码放入master节点上面
####关于master节点如何变为工作节点+master节点的,不清楚。查阅无果
进入到java代码中 db文件夹就是数据库sql文件 src就是我们的代码
改数据库链接和密码
把sql文件放到数据库那个服务器上
2,回到数据库服务器这边, (1)安装mariadb
直接进入mysql
这边创建数据库mydb,master这边配置文件改成mydb
导入sql
需要连接mysql
创建用户并授权 用户名授权test 密码123
刷新授权
3,将demo构建到tomcat镜像中 (1)装jdk (2)装maven
(3)到这个目录下
执行mvn操作
4,dockerFile
add是制作镜像时候执行的命令 run是容器启动时执行的命令
5,使用dockerfile构建镜像
构建镜像成功
让所有节点都能使用这个镜像
6,启动镜像----》pod master节点上
点击就执行了
–dry-run启动干跑模式。。。。。测试能不能这条命令通过
####这里通过yml文件方式启动pod,非常重要
#这里可以配置镜像拉取策略:没有的时候才拉取
7,服务端口暴露与发布
已干跑模式执行。暴露三个端口。。。。保存yml文件
任意一个node节点。。。。访问。。。任意节点的31043
