kubernetes环境搭建 -k8s笔记(一)
一、环境准备
1、硬件及版本信息:
cpu&内存:2核心,2G
网络: 每台vm主机2块网卡,一块NAT用于上网,别一块配置成 "仅主机模式",网段为192.168.100.X
OS:centos7.4
k8s:v1.13.3
docker: 18.09.2
2、一些初始化工作:
关闭防火墙
关闭SELinux
配置ntp
配置hosts
# /etc/hosts文件如下:每台主机都要配置
# tail -3 /etc/hosts
192.168.100.71 master.perry.com master
192.168.100.72 node1.perry.com node1
192.168.100.73 node2.perry.com node2
关闭swap
注释掉/etc/fstab中swap那行,并重启主机生效
# /dev/mapper/centos-swap swap swap defaults 0 0
开启透明网桥
# echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
# echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
# systctl -p
3、配置docker yum仓库
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、配置k8s yum仓库
# cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
gpgcheck=1
enabled=1
EOF
二、安装软件
master和node三台主机都安装 docker-ce kubelet kubeadm kubectl
# yum install docker-ce kubelet kubeadm kubectl
三、初始化master
# kubeadm init --kubernetes-version=v1.13.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.100.71
1、参数说明:
--kubernetes-version # 指定要安装的k8s版本
--pod-network-cidr # 指定pod网络地址范围
--service-cidr # 指定service网络地址范围
--apiserver-advertise-address #指定api地址,这里配置成了master的私网接口IP
2、kubeadm init时,会因为无法访问google,导致镜像下载失败,解决办法有如下2种:
1)想办法使用代理上google,有朋友要找到好用的代理告诉我下,^_^。
配置docker使用代理,配置完成后,重启docker服务
# vi /usr/lib/systemd/system/docker.service [Service]
……
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.0/8,192.168.0.0/16"
……
2)根据kubeadm init执行时的报错提示,可以获知需要下载哪些镜像,这些镜像可以先从阿里云的registry下载,下载完成后再重新打tag,具体操作如下:
[root@master scripts]# cat get_k8s_img_from_aliyun.sh
#!/bin/bash
# need get images
images=(
k8s.gcr.io/kube-apiserver:v1.13.3
k8s.gcr.io/kube-controller-manager:v1.13.3
k8s.gcr.io/kube-scheduler:v1.13.3
k8s.gcr.io/kube-proxy:v1.13.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6
)
k8s_registry=k8s.gcr.io
aliyun_registry=registry.cn-hangzhou.aliyuncs.com
# get images from aliyun registry
function get_aliyun_k8s_images() {
for k8s_image in ${images[*]};do
image=` echo $k8s_image | awk -F '/' '{print $2}'`
docker pull $aliyun_registry/google_containers/$image
done
}
# tag images to k8s.gcr.io registry
function tag_images() {
for k8s_image in ${images[*]};do
image=` echo $k8s_image | awk -F '/' '{print $2}'`
docker tag $aliyun_registry/google_containers/$image $k8s_registry/$image
done
}
get_aliyun_k8s_images
tag_images
docker pull quay.io/coreos/flannel:v0.11.0-amd64
docker images
kubeadm init 初始化成功后,可以看到如下信息:
Your Kubernetes master has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can now join any number of machines by running the following on each node
as root: kubeadm join 192.168.100.71:6443 --token rfhs54.1i7ol2gt68pmnsl6 --discovery-token-ca-cert-hash sha256:75e6507e0cd820fae522348f40c9a6fd7318e5ebf34829cebafdec0acc368749
四、将node节点加入k8s集群中
node节点需要以下三个镜像
k8s.gcr.io/kube-proxy:v1.13.3
k8s.gcr.io/pause:3.1
quay.io/coreos/flannel:v0.11.0-amd64
#根据maser上 kubeadmin init执行结果的提示,在2台node上分别执行如下命令
# kubeadm join 192.168.100.71:6443 --token rfhs54.1i7ol2gt68pmnsl6 --discovery-token-ca-cert-hash sha256:75e6507e0cd820fae522348f40c9a6fd7318e5ebf34829cebafdec0acc368749
说明:
1)master和node节点上如果 kubeadm执行不成功,或者需要重新执行,需要先使用kubeadm reset 恢复初始状态
2)master和node节点上需要开启kubectl开机自启动 systemctl enable kubectl, 否则主机重启后组件类容器不能启动
五、验证:
1、查看节点信息
kubectl get nodes
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master.perry.com Ready master 32h v1.13.3
node1.perry.com Ready <none> 25h v1.13.3
node2.perry.com Ready <none> 25h v1.13.3
六、发布一个service,体验一下k8s
一个简单的Demo,创建/发布/扩容/缩容/
部署myapp应用
1、在master创建一个myapp的应用,副本数量为2
# kubectl run myapp --image=ikubernetes/myapp:v1 --replicas=2 可以通过以下一些命令查看应用的状态等信息
# kubectl get deployment
# kubectl get deployment -w
# kubectl get deployment
# kubectl get pods -o wide 2、发布应用
# kubectl expose deployment myapp --name=myapp --port 80
# kubectl get svc 3、发布应用,外部可以访问
# kubectl eiit svc myapp
type: ClusterIP 将 ClusterIP 修改为NodePort kubectl get svc
在集群外部访问http://192.168.100.72:32602/ 4、扩容myapp应用
# kubectl scale --replicas=5 deployment myapp
# kubectl get pod -o wide 5、缩容myapp应用
# kubectl scale --replicas=3 deployment myapp
# kubectl get pod -o wide 6、滚动更新
# kubectl set image deployment myapp myapp=ikubernetes/myapp:v2 7、查看滚动更新过程
# kubectl rollout status deployment myapp 8、更新完成后,查看镜像版本
# kubectl describe pods myapp-65899575cd-df62l 9、回滚
# kubectl rollout undo deployment myapp 10、删除应用
# kubectl delete deployment myapp
# kubectl delete svc myapp
kubernetes环境搭建 -k8s笔记(一)的更多相关文章
- Docker Kubernetes 环境搭建
Docker Kubernetes 环境搭建 节点规划 版本 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 etcd存储版本:etcd-3. ...
- 傲视Kubernetes(二):Docker镜像搭建与本地Kubernetes环境搭建
主要内容: 1.Docker与Kubernetes的关系 2.SpringBoot微服务的Docker镜像创建 3.Kubernetes本地环境搭建 一.Docker与Kubernetes的关系 在说 ...
- opencv在vc2010 express下环境搭建方法笔记+空白通用工程(已编译测试通过)(提供下载)
opencv在VC2010 express版本下的环境搭建可以参见下面的wiki,这里面讲的非常清楚. http://wiki.opencv.org.cn/index.php/VC_2010_Expr ...
- 2019-9-16:渗透测试,基础学习,Linux下软件安装,环境搭建,笔记
Centos linux下软件安装yum 通过分析rpm包头数据后,自动解决依赖关系,直接云端下载软件,根据不同版本系统获取不同软件信息,按顺序下载rpm包,安装软件yum search 软件名:搜索 ...
- 二、kubernetes环境搭建
主要内容 1.环境准备(2主机) 2.安装流程 3.问题分析 4.总结 环境配置(2主机) 系统:CentOS 7.3 x64 网络:局域网(VPC) 主机: master:172.16.0.17 m ...
- 三、kubernetes环境搭建(实践)
一.目前近况 docker 版本 K8S支持 18.06的 二.安装docker #1.配置仓库 sudo yum install -y yum-utils device-mapper-persist ...
- kubernetes 环境搭建(ubuntu16.04)
通过kubeadm安装kubernetes的教程:1: 首先在每台机器上安装: docker(1.12), kubeadm(1.6), kubectl, kubelet, kubernetes-cni ...
- kubernetes 环境搭建
一.规划1.系统centos 7 2.ip规划及功能分配192.168.2.24 master 192.168.2.24 etcd 192.168.2.25 node1(即minion)192.168 ...
- 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装
准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...
随机推荐
- Vegas转场功能的妙用,让片头转场更酷炫
如今视频剪辑已经是一件非常平常的事情了,很多时候我们制作一段或者剪辑一段视频,其实都比较简单,但是如果想要视频显得高级些,这时候就可以给自己的视频制作一个好看的片头了,具体该怎么做呢? 用视频剪辑软件 ...
- 线程池中状态与线程数的设计分析(ThreadPoolExecutor中ctl变量)
目录 预备知识 源码分析 submit()源码分析 shutdownNow()源码分析 代码输出 设计目的与优点 预备知识 可以先看下我的另一篇文章对于Java中的位掩码BitMask的解释. 1.一 ...
- yii2.0 curl的使用
yii2 curl的使用办法 get: use linslin\yii2\curl; public function actionCurl($value =0) { $url = 'http://ya ...
- Spring 源码阅读环境的搭建
前言 本文记录了 Spring 源码环境的搭建方式,以及踩过的那些坑!当前版本:5.3.2-SNAPSHOT. 环境准备 Git JDK master 分支需要 JDK 11 5.2.x 分支, J ...
- G - Pyramid 题解(打表)
题目链接 题目大意 t组数据,给你一个n(n<=1e9)求高度为n的等边三角形,求里面包含了多少个等边三角形 题目思路 打表找规律,然而我一直没找到规律. 看到题解恍然大悟,答案就是C(n+3, ...
- 败家玩意儿!Redis 竟然浪费了这么多内存!
作为内存数据库,内存空间大小对于 Redis 来说是至关重要的.内存越多,意味着存储的数据也会越多.但是不知道你有没有遇到过这样的情况,明明空间很大,但是内存的使用却不是很理想. 为什么会出现这样的情 ...
- Java String 演进全解析
前言 String 是我们使用最频繁的对象,使用不当会对内存.程序的性能造成影响,本篇文章全面介绍一下 Java 的 String 是如何演进的,以及使用 String 的注意事项. 下面的输出结果是 ...
- charles 常用功能 (六)抓包结果列表指展示关注的接口(focus on 功能)
添加关注的接口 2.启用关注接口,添加过滤的地址 3.重新抓包结果 不在上一步配置中的接口,都会隐藏在other host中
- moviepy音视频剪辑:音视频的加载和输出
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在本地进行音视频处理时,首先要从视频文件 ...
- 利用反射注册SpringCache的RedisCacheManager缓存信息
项目开发中,SpringCache是一个非常方便的工具,但是在配置信息注册时,用枚举方式可以满足遍历,但却无法应用在@Cacheable注解里,因此可以通过静态类的方式,借助反射完成缓存信息注册. 配 ...