kubeadm部署kubernetes集群

使用kubeadm部署kubernetes集群

kubeadm是k8s官方推出的一个快速部署集群的工具,通过两条命令完成一个kubernetes集群

创建一个节点
kuneadm init
讲一个node节点加入集群中
kubeadm join "master节点的端口和IP"

kubeadm方式部署是以容器化的方式去部署k8s集群所有的组件都是起容器来进行的。

一,安装条件准备

准备一台机器或者多台机器
硬件配置:2GB或者更多RAM,2个cpu或者更多,硬盘50G
集群中的机器之间可以网络互通
可以访问外网需要拉取镜像
禁止swap分区

二,环境准备:

节点:
k8s-master:  10.0.0.11
k8s-node1: 10.0.0.12
k8s-node2: 10.0.0.13  

1,关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2,关闭selinux

永久关闭:
sed -i 's/enforcing/disabled/' /etc/selinux/config
临时关闭:  
setenforce 0

3,关闭swap

永久关闭:
vim /etc/fstab
临时关闭:
swapoff -a

4,主机名修改规划:

master: k8s-master
node1:   k8s-node1
node2:   k8s-node2
hostnamectl set-hostname "主机名"

5,在master添加hosts

cat >/etc/hosts <<EOF
10.0.0.11 k8s-master
10.0.0.12 k8s-node1
10.0.0.13 k8s-node2
EOF

6,将桥接的IPv4流量传递到iptables的链:

cat >/etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables =1
net.bridge.bridge-nf-call-iptables =1
EOF
生效:
sysctl --system  

7,时间同步(注:时间同步对kubenetes很重要)

yum install ntpdate -y
ntpdate time.windows.com

三,安装docker、kubeadm,kubelet(所有节点)

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

3.1安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

3.2配置镜像加速

mkdir /etc/docker/ -p 
cat >/etc/docker/daemon.json << EOF
{"registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"]}
EOF
systemctl restart docker

3.3配置kubenetes阿里云yum源

cat >/etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3.4安装kubeadm,kubectl,kubelet

由于版本更新快这里指定版本:

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet

kubelet是systemd守护进程管理
kubectl是k8s命令管理工具
kuneadm是部署初始化的工具

四,部署k8s Master

在10.0.0.11-k8s-master上执行:

kubeadm init \
--apiserver-advertise-address=10.0.0.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

—apiserver-advertise-address 集群通告地址
—image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
—kubernetes-version K8s版本,与上面安装的一致
—service-cidr 集群内部虚拟网络,Pod统一访问入口
—pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
image.png

这里显示初始化集群成功
创建kubectl使用的连接k8s认证文件到默认路径

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看集群
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE     VERSION
k8s-master   NotReady   master   7m20s   v1.18.0

五,加入k8s-Node节点

在10.0.0.12/13上执行
向集群添加新节点,执行kubeadm init输出的kubeadm join 命令:

kubeadm join 10.0.0.11:6443 --token gg0yg5.5k9mp5y1lg3ce0f1 \
    --discovery-token-ca-cert-hash sha256:72c13609e11b6d2a12e777ae3b43388e8ad0371dc372e3735311a658c0350411 
    
查看集群:
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
k8s-master   NotReady   master   15m   v1.18.0
k8s-node1    NotReady   <none>   12s   v1.18.0
k8s-node2    NotReady   <none>   8s    v1.18.0
安装支持补全命令
yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
kubectl completion bash >/etc/bash_completion.d/kubectl
注:这里没有部署容器网络所以还没有准备好

默认的token是24h当过期后该token就不能使用了需要重新创建:

kubeadm token create --print-join-command

六,部署容器网络(CIN)

这里是用Flannel作为kubernetes的容器网络方案,能解决跨主机之间的通信
Flannel是centos维护的一个网络组件Flannel为pod容器提供全局唯一的IP,Flannel是使用ETCD来存储pod的子网与NodeIP之间的关系,Flannel守护进程在每台主机上运行,并维护ETCD信息和数据路由包。
手动部署flannel网络可以去官方的github中下载
https://github.com/coreos/flannel

image.png

这说对于kubernetes1.17以上的版本可以直接是用手动部署
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system

卸载flannel网络步骤:
1,在master节点删除flannel

kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2,在node节点清理flannel网络留下的文件

ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*

注:执行完上面的操作,重启kubelet

七部署官方Dashboard

下载方式

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:


image.png
[root@k8s-master ~]# kubectl apply -f recommended.yaml 
[root@k8s-master ~]# kubectl get pod -n kubernetes-dashboard 
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-6b4884c9d5-89jml   1/1     Running   0          80s
kubernetes-dashboard-7f99b75bf4-nrtjh        1/1     Running   0          80s

浏览器访问:https://nodeip:30001

image.png

创建service account并绑定默认cluster-admin管理员集群角色:

1,创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
2,用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
3,获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
image.png

使用输出的Token登录Dashboard。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容