使用ubuntu charmed kubernetes 部署一套生产环境的集群
搭建一个基本的集群
集群ip规划
| hostname | ip |
|---|---|
| ubuntu-1 | 10.0.0.10 |
| juju-controller-1 | 10.0.0.11 |
| juju-master-1 | 10.0.0.21 |
| juju-master-2 | 10.0.0.22 |
| juju-master-3 | 10.0.0.23 |
| juju-worker-1 | 10.0.0.31 |
| juju-worker-2 | 10.0.0.32 |
ubuntu-1 为juju客户端和haproxy机器
juju-controller-1为juju控制器节点(可以做高可用)
以下操作都是在ubuntu-1上执行
安装juju
sudo snap install juju --classic
设置云类型
juju add-cloud
输入manual
添加机器(一共5台)
juju bootstrap
juju add-machine ssh:root@x.x.x.x
机器添加完成后,
juju machines能看到机器id
生成安装core.yaml
在https://jujucharms.com/new/画图,然后导出成yaml
这里是我的yaml
applications:
containerd:
charm: 'cs:~containers/containerd-102'
series: focal
annotations:
gui-x: '475'
gui-y: '800'
easyrsa:
charm: 'cs:~containers/easyrsa-345'
num_units: 1
series: focal
annotations:
gui-x: '90'
gui-y: '420'
to:
- '0'
etcd:
charm: 'cs:~containers/etcd-553'
num_units: 3
options:
channel: 3.4/stable
series: focal
annotations:
gui-x: '800'
gui-y: '420'
to:
- '0'
- '1'
- '2'
flannel:
charm: 'cs:~containers/flannel-518'
options:
cidr: 10.24.0.0/16
series: focal
annotations:
gui-x: '475'
gui-y: '605'
kubernetes-master:
charm: 'cs:~containers/kubernetes-master-955'
num_units: 3
options:
enable-dashboard-addons: false
proxy-extra-args: proxy-mode=ipvs
service-cidr: 10.153.183.0/24
series: focal
annotations:
gui-x: '800'
gui-y: '850'
to:
- '0'
- '1'
- '2'
kubernetes-worker:
charm: 'cs:~containers/kubernetes-worker-726'
num_units: 2
options:
proxy-extra-args: proxy-mode=ipvs
expose: true
series: focal
annotations:
gui-x: '90'
gui-y: '850'
to:
- '3'
- '4'
relations:
- - 'kubernetes-master:kube-api-endpoint'
- 'kubernetes-worker:kube-api-endpoint'
- - 'kubernetes-master:kube-control'
- 'kubernetes-worker:kube-control'
- - 'kubernetes-master:certificates'
- 'easyrsa:client'
- - 'etcd:certificates'
- 'easyrsa:client'
- - 'kubernetes-master:etcd'
- 'etcd:db'
- - 'kubernetes-worker:certificates'
- 'easyrsa:client'
- - 'flannel:etcd'
- 'etcd:db'
- - 'flannel:cni'
- 'kubernetes-master:cni'
- - 'flannel:cni'
- 'kubernetes-worker:cni'
- - 'containerd:containerd'
- 'kubernetes-worker:container-runtime'
- - 'containerd:containerd'
- 'kubernetes-master:container-runtime'
machines:
'0': {}
'1': {}
'2': {}
'3': {}
'4': {}
根据yml来部署
juju deploy ./core.yaml --map-machines=existing,0=0,1=1,2=2,3=3,4=4
juju status 全部idle就算正常了
kata容器
部署
juju deploy cs:~containers/kata
juju add-relation kata kubernetes-master
juju add-relation kata kubernetes-worker
juju add-relation kata:untrusted containerd:untrusted
使用
部署的时候加上io.kubernetes.cri.untrusted-workload: "true"
apiVersion: v1
kind: Pod
metadata:
name: nginx-untrusted
annotations:
io.kubernetes.cri.untrusted-workload: "true"
spec:
containers:
- name: nginx
image: nginx
更换master节点
先删除节点
juju remove-unit etcd/1 --force --no-wait
juju remove-unit kubernetes-master/1 --force --no-wait
juju remove-machine 1 --force --no-wait
etcd集群删除这个member
需要先下载证书到本地(要解压)
juju run-action --wait etcd/0 package-client-credentials
juju scp etcd/0:etcd_credentials.tar.gz etcd_credentials.tar.gz
然后使用etcdctl删除节点
export ETCDCTL_KEY_FILE=$(pwd)/client.key
export ETCDCTL_CERT_FILE=$(pwd)/client.crt
export ETCDCTL_CA_FILE=$(pwd)/ca.crt
export ETCDCTL_ENDPOINT=https://10.0.0.21:2379
etcdctl member list
etcdctl member remove c2499df1988d1925
增加节点
juju add-machine ssh:root@100.64.1.167
juju machines
记住节点ID,假如是9
扩容master到节点9
juju add-unit kubernetes-master --to 9
扩容etcd到节点9
juju add-unit etcd --to 9
执行kubectl命令
搭建haproxy负载均衡
haproxy配置文件
...省略
frontend http_ingress_traffic_fe
bind 0.0.0.0:80
mode tcp
default_backend http_ingress_traffic_be
backend http_ingress_traffic_be
mode tcp
balance roundrobin
server juju-worker-1 10.0.0.31:80 check
server juju-worker-2 10.0.0.32:80 check
frontend https_ingress_traffic_fe
bind 0.0.0.0:443
mode tcp
default_backend https_ingress_traffic_be
backend https_ingress_traffic_be
mode tcp
balance roundrobin
server juju-worker-1 10.0.0.31:443 check
server juju-worker-2 10.0.0.32:443 check
frontend k8s_api_fe
bind 0.0.0.0:6443
mode tcp
default_backend k8s_api_be
backend k8s_api_be
mode tcp
balance roundrobin
server juju-master-1 10.0.0.21:6443 check
server juju-master-2 10.0.0.22:6443 check
server juju-master-3 10.0.0.23:6443 check
修改负载均衡的ip
juju config kubernetes-master loadbalancer-ips="10.0.0.10"
安装kubectl
sudo snap install kubectl --classic
获取新的kubeconfig配置文件
juju scp kubernetes-master/0:config ~/.kube/config
juju-controller高可用
增加新的controller节点
juju add-machine -m controller ssh:root@100.64.1.169
查看controller机器
juju machines -m controller
开启高可用
juju enable-ha --to 5,6
查看controller信息
juju controllers --refresh
juju controllers
使用ubuntu charmed kubernetes 部署一套生产环境的集群的更多相关文章
- 使用kubeadm部署一套高可用k8s集群
使用kubeadm部署一套高可用k8s集群 有疑问的地方可以看官方文档 准备环境 我的机器如下, 系统为ubuntu20.04, kubernetes版本1.21.0 hostname IP 硬件配置 ...
- 京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
环境 准备工作 配置ansible(deploy 主机执行) # ssh-keygen # for i in 192.168.3.{21..28}; do ssh-copy-id -i ~/.ssh/ ...
- 单例模式在生产环境jedis集群中的应用
背景:不久前单位上线一款应用,上了生产环境之后,没过多久,便吃掉了服务器所有的内存,最后导致网站服务挂了. 在解决了这一问题之后,我发现这其实是典型的一单例模式,现分享一下. 之前存在问题的老代码如下 ...
- Kubernetes笔记(一):十分钟部署一套K8s环境
Kubernetes是Goole开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理 -- 百度百科. 接触K8s也有半年多了,也基于阿里云平台搭建了包含多级服务.目前运行较为稳定的 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
随机推荐
- 仅用一句SQL更新整张表的涨跌幅、涨跌率
问题场景 各大平台店铺的三项评分(物流.服务.商品)变化情况: 商品每日价格的变化记录: 股票的实时涨跌浮: 复现场景 表:主键ID,商品编号,记录时的时间,记录时的价格,创建时间. 问题:获取每个商 ...
- 分享几个网址二维码生成api
分享几个网址二维码生成api 传入网址参数,或许二维码图片,扫二维码能直接跳转网址 http://b.bshare.cn/barCode?site=weixin&url=https://www ...
- linux删除文件空间不释放问题解决
目录 场景描述 原因 解决方法 在线清空文件 场景描述 某天,收到Prometheus报警,生产中某台机器出现磁盘空间不足报警,该台服务器是mysql其中一台从库,远程登录到该服务后,排查磁盘空间的原 ...
- 【Nginx(二)】Nginx目录结构和常用的命令以及核心配置文件
Nginx的目录结构: 默认的安装路径 : /usr/local/nginx 安装完成后,Nginx的目录结构如下: conf: #所有配置文件的目录 nginx.conf #默认的主要配置文件 ...
- PAT 乙级 -- 1011 -- A+B和C
问题简述 给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序 ...
- 如何以最简单的方式安装 KALI 渗透测试框架系统
0x01 第一步下载 KALI 百度搜索 KALI 官网,找到下载区,我选的是 64 位标准版,但是推荐下载 32 位(功能貌似更全) 这个为下载后的 iso 镜像文件 0x02 第二步打开虚拟机,配 ...
- Spring Cloud Alibaba(7)---docker-compose搭建nacos1.4.0集群
docker-compose搭建nacos1.4.0集群 有关Nacos之前写过四篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba ...
- SpringBoot程序后台运行
使用nohup命令让进程后台运行 nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 & >日志文件名.log : ...
- JS求一个字符串在另一个字符串中出现的次数
参数说明: subString子字符串 originString母字符串 isIgnoreCap是否忽略大小写,默认忽略 function stringFre(subString, originStr ...
- 上手 WebRTC DTLS 遇到很多 BUG?浅谈 DTLS Fragment
上一篇<详解 WebRTC 传输安全机制:一文读懂 DTLS 协议>详细阐述了 DTLS.本文将结合 DTLS 开发中遇到的问题,详细解读 DTLS 的一些基础概念以及 Fragment ...