30分钟无坑部署K8S单Master集群
Jesse导读:11月9号,我在中国.NET开发者峰会(.NET Conf China 2019)上分享了之前ASP.NET Core和Kubernetes做微服务的经验,在10号的时候又联合张善友、陈计节两位大佬一起做了一个6个小时的动手实践,得到了非常好的反馈。学习K8S需要首先拥有一个K8S的操作环境,由于它的复杂性以及不可描述的原因导致这很多同学直接被卡在了这里。redz(人称小红)是我们团队中的成员之一,这篇文章是他在自己用VMWare虚拟机上搭了3台虚拟机并且在这3台虚拟机上搭建K8S 1.16版本的过程 。
相关环境
CentOS 7.6 (2-3台)
K8s 1.16.2
Docker 18.09.3
需要自己准备2-3台虚拟机来安装CentOS7.6系统,在开始之前先修改主机名称(主机名称不能重复-如果重复即使work节点加入成功,master看不到work节点)
hostname
vi /etc/hostname
在vi中编辑hostname之后输入:wq保存,之后重启系统即可。
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
禁用swap
swapoff -a
修改
etc/fstab
在行首加 #,注释
/dev/mapper/centos-swap swap
安装Docker
k8s支持的Docker版本
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
systemctl start docker.service
systemctl enable docker.service
添加K8s 国内镜像源
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
安装K8s所需要的3个组件
yum install -y kubeadm kubelet kubectl
设置k8s开机自启动
systemctl enable kubelet.service
K8s集群
创建K8s集群 Master Node
在master节点上执行以下命令
kubeadm init --image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=cri \
--kubernetes-version=1.16.2
输出以下信息表示,K8s与Docker版本不一致
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.4. Latest validated version: 18.09
输出以下信息表示,swap没有被禁用
[ERROR Swap]: running with swap on is not supported. Please disable swap
输出以下信息表示,请执行echo
'1' > /proc/sys/net/bridge/bridge-nf-call-iptables
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
安装成功后, 会显示如下的信息 按步执行即可
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Init Network Flannel 初始化网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
由于某种不可抗力 请先下载yml至本机后执行
kubectl apply -f kube-flannel.yml
加入K8s集群 Slave Node
对于从节点 执行步骤至
安装K8s
无需init
在master节点上执行, 获取join-token
kubeadm token create --print-join-command
kubeadm join 192.168.69.128:6443 --token uc826o.l9na62a2ckmf5rjo --discovery-token-ca-cert-hash sha256:2be9656d7b4c3e9aab2b1259b0eea948f0b0b05d082267aa5676967cc495c168
从节点执行join-token
K8s集群相关命令
集群获取节点
kubectl get nodes
集群删除节点
kubectl delete node <node-name>
被删除的节点重新加入集群 先执行
kubeadm reset
K8s UI kubernetes-dashboard
部署yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
此部署文档镜像来源于docker hub
假设部署文档由于众所周知的原因不可访问 请先通过技术手段获取文档后执行
部署命令
kubectl apply -f recommended.yaml
使用
NodePort
方式暴露30065端口 用于非k8s节点中访问 修改yaml以下内容 重新执行部署命令
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30065
selector:
k8s-app: kubernetes-dashboard
NodePort
方式默认端口范围30000-32767获取kubernetes-dashboard
访问token
kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
在firefox中访问该网址 https://[k8s节点]:30065选择token登录并输入访问token
kubernetes-dashboard要求使用HTTPS Chrome不能访问此类没有认证的web,可以使用firefox进入访问
本机添加kubectl
在windows安装 kubectl
1:choco install kubernetes-cli
2:在master 主机上进入/etc/kubernetes/admin.conf 把admin.conf 下载下来,拷贝到本机当前用户的 .kube\config里面 如果当前用户下没有.kube 使用powershell 建立一个文件夹和config里面
ASP.NET Core微服务 on K8S
如果你对asp.net core微服务和k8s感兴趣,可以看看我录制的视频。涉及到K8S管理、微服务设计以及一些中间件在k8s上的运维,点击左下角的【阅读原文】查看详情。 如果有疑问也可以添加我的微信:280113562进行咨询。
30分钟无坑部署K8S单Master集群相关推荐
- k8s安装部署步骤_30分钟无坑部署K8S单Master集群
Jesse导读:11月9号,我在中国.NET开发者峰会(.NET Conf China 2019)上分享了之前ASP.NET Core和Kubernetes做微服务的经验,在10号的时候又联合张善友. ...
- ansible-playbook部署K8S高可用集群
通过ansible-playbook,以Kubeadm方式部署K8S高可用集群(多主多从). kubernetes安装目录: /etc/kubernetes/KubeConfig: ~/.kube/c ...
- Kubeadm 在线快速部署 1.23 单master集群 【实验用】
飞机票 1. 前置知识点 1.1 准备环境 1.2 操作系统初始化配置[所有节点] 2. 安装Docker/kubeadm/kubelet[所有节点] 2.1 安装Docker 2.2 添加阿里云YU ...
- 怎么把springboot部署到阿里云_听说“一分钟就能部署阿里云ECS集群”?
导读 "企业上云"是当下大势所趋,"提效.降成本" 也是企业上云.迁云和管理云必须关注的问题.今天我们将从一个集群部署的场景出发,介绍阿里云如何借助生态工具Te ...
- 实践练习二(必选):手动部署 OceanBase 单副本集群
说明 相关连接: https://open.oceanbase.com/blog/10900159 https://open.oceanbase.com/answer/detail?id=137006 ...
- K8S搭建单Master集群(二进制部署方式)
一. 安装要求 (1)多台服务器,操作系统 CentOS7.6-86_x64 (2)硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘40GB或更多 (3)可以访问外网,需要拉取镜像,如果服务 ...
- kubernetes单Master集群部署--Node节点部署组件(6)
1.kubelet组件授权 Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时, ...
- kubeasz部署k8s高可用集群
前言:如无特殊说明,所有操作都用root账号在所有节点执行. 说明:kubeasz是一款国产开源的k8s部署软件,采用ansible role的部署方式,部署k8s二进制集群.熟悉ansible ro ...
- 部署k8s(16):集群调度策略的四种方案
一.调度说明 1.简介 Scheduler是ku bernet es的调度器, 主要的任务是把定义的pod分配到集群的节点上.听起来非常简单,但有很多要考虑的问题:公平:如何保证每个节点都能被分配资源 ...
最新文章
- 决策树算法之cart剪枝
- Qt 可编辑的树模型(Tree Model)的一个实例
- T-SQL、Jet SQL、PL-SQL
- Hadoop的TextInputFormat的作用,如何自定义实现的
- 两个网站:借物网,rss交流网站opml.cn
- 配置使用4台主机实现12台主机的集群
- getlock mysql_mysql中的get_lock锁机制解析
- 静态类型和动态类型的语言有什么区别?
- linux+livecd维修工具,使用LiveCd修复Ubuntu
- 微信支付-JASPI:准备工作[微信公众平台配置,微信商户平台配置]
- DNT精英论坛(暨.NET北京俱乐部)第2期:.NET依赖注入在区块链项目AElf中的实践
- 一阶电路误差分析_自动控制原理 | 时域分析法
- 公司债务法人代表有义务还吗?
- 让我十二点催她睡觉,我用 Python 轻松解决
- 设备管理---要点练习及总结
- Oracle域完整性约束
- 嵌入式培训如何学?什么人适合转行嵌入式开发?
- 如何用AI做一个好看的图案
- 【Windows8开发】关于WinRT组件,WinRT dll,Win32 dll,WinRT exe组件的一些尝试
- FCKEditor用法
热门文章
- static_cast、dynamic_cast、reinterpret_cast、const_cast[转]
- 隐藏文件始终不能显示的完美解决方法
- android bilibili搜索框,仿bilibili搜索框效果(三句代码实现)
- Mac OS使用技巧之三:发射无线网络信号的方法
- Ethereum-EIPs
- 阿里云MaxCompute香港开服 将引入更多人工智能服务
- Nats的消息通信模型
- Eclipse 安装配置总结(WST WTP)(转)
- Js黑客帝国效果 文字下落 制作过程和思路
- 为EasyUI 的Tab 标签添加右键菜单