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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容