kubeSphere使用应用商店安装部署Harbor
从应用商店中部署 Harbor
查看是否已安装应用商店。
若未安装,则可以阅读 Linux安装部署KubeSphere基于k8s集群 的启用可插拔功能组件
找到 Harbor,设置名称并选择应用版本,点击下一步。
在应用配置页面,编辑 Harbor 的配置文件,请注意以下字段。
type:访问 Harbor 服务的方式。本示例使用 nodePort。
tls:指定是否启用 HTTPS。多数情况下设置为 false。
commonName:192.168.18.111 #填写自己的IP地址,用于访问的地址,这里我填写k8s-master1的IP地址。
externalURL:暴 ...
kubesphere使用镜像安装部署Redis
查看redis容器启动
123456789101112131415#创建配置文件## 1、准备redis配置文件内容mkdir -p /mydata/redis/conf && vim /mydata/redis/conf/redis.conf##配置示例redis.confappendonly yesport 6379bind 0.0.0.0#docker启动redisdocker run -d -p 6379:6379 --restart=always \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-v ...
kubesphere使用镜像安装部署Mysql
查看mysql容器启动
12345678910111213141516171819202122docker run -p 3306:3306 --name mysql-01 \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=root \--restart=always \-d mysql:5.7#配置文件内容[client]default-character-se ...
Linux安装部署高可用k8s集群和Kubesphere
环境初始化和安装 keepalibed、haproxy
设置yum源,可以查看Linux安装部署docker博客文章。(安装在所有节点)
设置环境初始化,可以查看Linux安装部署高可用k8s集群博客文章。(安装在相应的节点)。
使用 KubeKey 部署 KubeSphere 和 Kubernetes
12345678910111213141516171819202122232425262728293031323334353637383940414243# github受限,确保您从正确的区域下载export KKZONE=cn# 下载 KubeKey curl -sfL https:/ ...
Linux安装部署KubeSphere基于k8s集群
安装部署k8s集群
可以安装多节点k8s集群(一主多从) 或者 安装高可用k8s集群(多主多从),高可用搭建可查看Linux安装部署高可用k8s集群博客文章。
安装helm
下载helm。(master节点机器)
12345mkdir -p /etc/tillercd /etc/tillerwget https://github.com/helm/helm/releases/tag/v2.16.2
若下载时间较长,可先下载压缩包,在上传服务器,Helm国内下载站。
安装。(master节点机器)
123456789101112131415161718192021222324252627 ...
Linux安装部署高可用k8s集群
环境规划
多主多从:多个Master节点和多台Node节点,使用VIP漂移,,用于生产环境。
角色
IP地址
操作系统
配置
软件
k8svip 虚拟
192.168.18.110
master01
192.168.18.111
CentOS8
4核CPU,8G内存,120G硬盘
docker & kubeadm & kubectl & kubelet & Keepalived & HAproxy & Flannel
master02
192.168.18.112
CentOS8
4核CPU,8G内存,120G硬盘
...
Linux安装部署docker
卸载已安装docker
12345678910 yum remove docker-ce docker-ce-cli containerd.io yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装阿里yum源
1234567891011121314151617181920# 进入/etc/yum.repos ...
Java变量的线程安全分析
成员变量和静态变量是否线程安全
如果它们没有共享,则线程安全
如果它们被共享了,根据它们的状态是否能够改变,又分两种情况
如果只有读操作,则线程安全
如果有读写操作,则这段代码是临界区,需要考虑线程安全
局部变量是否线程安全
局部变量是线程安全的
但局部变量引用的对象则未必
如果该对象没有逃离方法的作用访问,它是线程安全的
如果该对象逃离方法的作用范围,需要考虑线程安全
局部变量线程安全分析
1234public static void test1() { int i = 10; i++;}
每个线程调用 te ...
Java线程共享synchronized解决方案
为了避免临界区的竞态条件发生,有多种手段可以达到目的。
阻塞式的解决方案:synchronized,Lock
非阻塞式的解决方案:原子变量
synchronized,即俗称的【对象锁】,它采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。这样就能保证拥有锁的线程可以安全的执行临界区内的代码,不用担心线程上下文切换。
注意
虽然 java 中互斥和同步都可以采用 synchronized 关键字来完成,但它们还是有区别的:
互斥是保证临界区的竞态条件发生,同一时刻只能有一个线程执行临界区代码
同步是由于线程执行的先后、顺序不 ...
Java线程共享带来的问题
Java 的体现
12345678910111213141516171819202122static int counter = 0;public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { for (int i = 0; i < 5000; i++) { counter++; } }, "t1"); ...