Kubeadm快速部署k8s集群

1.安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

- 一台或多台机器,操作系统 CentOS7.x-86_x64

- 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

- 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点

- 禁止swap分区

2.准备环境

2.1主机规划

角色

IP

备注

master

192.168.1.80

 

node1

192.168.1.81

 

node2

192.168.1.82

 

 

2.2关闭防火墙

# 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

# 关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久

setenforce 0  # 临时

2.3关闭swap

swapoff -a  # 临时

sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

2.4根据规划设置主机名和hosts文件

hostnamectl set-hostname <hostname>

# 在master添加hosts

cat >> /etc/hosts << EOF

192.168.1.80 k8smaster

192.168.1.81 k8snode1

192.168.1.82 k8snode2

EOF

2.5流量传递和时钟同步

# 将桥接的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  # 生效

# 时间同步

yum install ntpdate -y

ntpdate time.windows.com

 

3.所有节点安装docker/kubeadm/kubelet

3.1安装docker

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# yum list docker-ce --showduplicates|sort -r

# yum -y install docker-ce-18.06.3.ce-3.el7

# systemctl enable docker && systemctl start docker

# docker version

Version:           18.06.3-ce

3.2 添加阿里云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

# yum list kubelet --showduplicates|sort -r

3.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

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

4. 部署Kubernetes Master

在192.168.1.80(Master)执行。

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

$ kubeadm init \
--apiserver-advertise-address=192.168.1.80 \
--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

输出如下,需要记住,

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

kubeadm join 192.168.1.80:6443 --token 14zmjk.77k0l5d7f184lynv \

--discovery-token-ca-cert-hash sha256:b8f8276dac835c51befa418d6184a2cddbe80a39031c142e8500df37aafbba34

使用kubectl工具:

[root@k8smaster ~]# mkdir -p $HOME/.kube
[root@k8smaster ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8smaster ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8smaster ~]# kubectl get nodes
NAME        STATUS     ROLES    AGE     VERSION
k8smaster   NotReady   master   2m17s   v1.18.0

5. 加入Kubernetes Node

在192.168.1.81/82(Node)执行。

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

$ kubeadm join 192.168.1.80:6443 --token 14zmjk.77k0l5d7f184lynv \

--discovery-token-ca-cert-hash sha256:b8f8276dac835c51befa418d6184a2cddbe80a39031c142e8500df37aafbba34

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

kubeadm token create --print-join-command

[root@k8smaster ~]# kubectl get nodes   # 查看集群信息

NAME        STATUS     ROLES    AGE     VERSION

k8smaster   NotReady   master   5m13s   v1.18.0

k8snode1    NotReady   <none>   62s     v1.18.0

k8snode2    NotReady   <none>   49s     v1.18.0

6. 部署CNI网络插件

下载容器镜像

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/weaveworks/weave-kube:2.8.1
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/weaveworks/weave-kube:2.8.1 netcorecore/weave-kube:v2.8.1
docker pull netcorecore/weave-npc:v2.8.1

每个节点都需要这两个镜像(含master和node)

部署网络插件到集群

复制代码

wget http://static.corecore.cn/weave.v2.8.1.yaml
kubectl apply -f weave.v2.8.1.yaml
kubectl get pods -n kube-system |grep weav
weave-net-ctt2w 2/2 Running 0 28m
weave-net-jbpjw 2/2 Running 1 28m
weave-net-vq545 2/2 Running 0 28m
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8smaster Ready master 117m v1.18.0
k8snode1 Ready <none> 113m v1.18.0
k8snode2 Ready <none> 113m v1.18.0

复制代码

7. 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment myapp --image=swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/wangyanglinux/myapp:v1

kubectl expose deployment myapp --port=80 --type=NodePort

kubectl get pod,svc -owide

curl 192.168.1.81:31288

Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

访问地址:http://NodeIP:Port 

posted @   wang_wei123  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示