使用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组件 ...
随机推荐
- 到底什么才叫SEO
昨天去面试,公司的老板,问了我几个SEO的问题.SEO是什么?长尾词与关键词的区别?你用哪些SEO工具? SEO就是为了将关键词做上好的位置展示给用户.难道不是吗? 这些问题,我都答了一下. 然后他问 ...
- 文档翻译第001篇:Process Monitor帮助文档(Part 1)
[译者注] Process Monitor是一款非常著名的系统进程监视软件.总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统中所有文件的 ...
- Python脚本自动化破解大白鲨摄像头(Shodan)
关于本文的技术知识点,Shodan模块的用法,传送门--> Python中shadon模块的使用 Shodan的使用 今天我们要利用python进行自动化破解的摄像头叫大白鲨摄像头,他的 ...
- Web 服务器安全
目录 Apache Apache出现过的漏洞 Tomcat Tomcat出现过的漏洞 Nginx
- 渗透测试神器Cobalt Strike的使用
目录 Cobalt Strike Cobalt Strike的安装 Cobalt Strike的使用 创建监听器:
- Redis笔记整理
Redis 遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库.数据结构服务器. 特点: 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时 ...
- thinkphp 连接多个数据库(tp5.1为例)
1.config目录下添加数据库配置,内容跟原数据库配置一样就可以(数据库名改成连接的第二个数据库名) 2.连接部分代码: $db = Db::connect(config('database2.') ...
- SpringBoot学习笔记:Spring Data Jpa的使用
更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...
- spring中注解@Resource 与@Autowire 区别
① .@Resource 是根据名字进行自动装配:@Autowire是通过类型进行装配. ②. @Resource 注解是 jdk 的:@Autowire 是spring的.
- 『政善治』Postman工具 — 9、在Postman中使用断言
目录 1.Tests的介绍 2.常用SNIPPETS(片段)说明 (1)常用变量相关 (2)状态码相关 (3)响应结果断言: (4)Header : (5)响应速度: 3.示例 (1)响应码断言 (2 ...