Kubernetes集群部署(ubuntu18.04)

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
出于学习的目的,搭建一下Kubernetes集群

一、环境设置

1. 环境设置说明

Kubernetes集群可由一个master主机及一个以上(建议至少两个)node主机组成。
本次安装将由master,node-01,node-02三个独立的主机组成,操作系统为ubuntu18.04。
此外,各主机需要预设的环境如下:
(1)借助NTP服务设定各节点时间精确同步
(2)通过DNS完成各节点的主机名称解析
(3)关闭各节点的防火墙服务
(4)各节点禁用所有的Swap设备

2. 设置时钟同步

若节点可直接访问互联网,直接启动ntp服务即可(不想写了,网上一大把,自己去搜吧)

3. 主机名称解析

出于简化配置步骤的目的,本环境使用hosts文件进行各节点名称解析,文件内容如下所示:

10.1.8.4 master
10.1.8.5 node-01
10.1.8.6 node-02

4. 关闭防火墙

systemctl stop firewalld.service
systemctl stop iptables.service
systemctl disable firewalld.service
systemctl disable iptabes.service

备注:因为我的环境并没有任何防火墙保护措施,所以不用操作

5. 禁用Swap设备

swapoff -a # 临时关闭,重启失效
vim /etc/fstab #注释用于挂载Swap设备的所有行

二. 安装程序包(在所有节点上执行)

1. 安装docker

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y update
apt-cache madison <package name> #查看可安装的制定安装包的所有版本
apt-get install docker-ce=5:18.09.9~3-0~ubuntu-bionic #因为部署kubernetes需要指定的docker版本,所以我选择18.09

2. 安装kubenetes

sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
apt-get install kubectl kubeadm kubelet

三. 初始化master节点

kubeadm init --kubernetes-version="v1.18.0" --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

命令中的各选项简单说明:

1. --kubernetes-version  用于指定要部署的kubernetes程序版本,它需要与当前kubeadm支持的版本保持一致
2. --pod-network-cidr  用于指定Pod分配使用的网络地址,它通常应该与要部署使用的网络插件(例如flannel、calico等)的默认设定保持一致,10.244.0.0/16是flannel默认使用的网络
3. --service-cidr 用于指定为Service分配使用的网络地址,它有kubernetes管理,默认即为10.96.0.0/1

命令执行完毕后,输出末尾会有如下输出,它提示用户接下来如何操作:

Your Kubernetes control-plane 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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 10.1.8.4:6443 --token i69ojo.g4cqjaq5i89cl8ad \
    --discovery-token-ca-cert-hash sha256:2beb86e31b4bc68df34bc57e1e19d67f65480bd0b86b871df70ef9fb7d624c28

1. 初始化kubectl

kubectl是kube-apiserver命令行客户端程序,实现了除系统部署之外的几乎全部的管理操作,是kubernetes管理员使用最多的命令之一,kubectl需经由API server 认证及授权后才能执行相应的管理操作,kubeadm部署的集群为其生成了一个具有管理员权限的认证配置文件/etc/kubernetes/admin.conf,它可由kubectl通过默认"$HOME/.kube/config"的路径进行加载。
下面复制认证为Kubernetes系统管理员的配置文件至目标用户:

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

之后,就可以通过kubectl进行客户端命令测试,并借此了解集群组件的当前状态:

kubectl get componentstatus
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}

2. 添加flannel网络插件

flannel可以在github上找到,执行以下命令:

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

随后使用如下命令确认输出结果中的Pod的状态为"Running":

kubectl get pods -n kube-system -l app=flannel
NAME                          READY   STATUS    RESTARTS   AGE
kube-flannel-ds-amd64-4wxl5   1/1     Running   0          68m

四. 添加节点到集群

在node-01和node-02上执行以下命令:

kubeadm join 10.1.8.4:6443 --token i69ojo.g4cqjaq5i89cl8ad \
    --discovery-token-ca-cert-hash sha256:2beb86e31b4bc68df34bc57e1e19d67f65480bd0b86b871df70ef9fb7d624c28

最后执行命令,验证集群个节点状况:

kubectl get nodes
NAME        STATUS   ROLES    AGE   VERSION
master      Ready    master   83m   v1.18.0
node-01     Ready    <none>   83m   v1.18.0
node-02     Ready    <none>   83m   v1.18.0

至此,Kubernetes集群部署完毕!

参考视频:https://www.bilibili.com/video/BV1ib411Y7zz?p=3
flannel网络插件地址:https://github.com/coreos/flannel

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

推荐阅读更多精彩内容