系列:2、创建Kubernetes集群
创建Kubernetes集群有多种方式创建Kubernetes集群,可以在本地创建集群,也可以在云端创建集群(Ali Cloud,AWS,Azure)。本教程将关注于如何在本地创建集群。本篇将介绍多台服务器建集群,单台服务器建集群。1、环境准备Centos, 内存 4G关闭防火墙systemctl status firewalld.service #查看防火墙状态`systemctl stop f
创建Kubernetes集群
有多种方式创建Kubernetes集群,可以在本地创建集群,也可以在云端创建集群(Ali Cloud,AWS,Azure)。本教程将关注于如何在本地创建集群。
本篇将介绍多台服务器建集群,单台服务器建集群。
1、环境准备
Centos, 内存 4G
关闭防火墙
systemctl status firewalld.service #查看防火墙状态`
systemctl stop firewalld.service #关闭运行的防火墙
禁用selinux
getenforce #查看状态
setenforce 0 # 暂时关闭
vi /etc/selinux/config && SELINUX=disabled # 永久关闭
关闭swap分区
#1、关闭
swapoff -a
# 2、更改配置
vim /etc/fstab && 注释或者删除行: /mnt/swap swap swap defaults 0 0
# 3、确认
free -m #若swap行都显示 0 则表示关闭成功
# 4 调整 swappiness 参数
echo 0 > /proc/sys/vm/swappiness # 临时生效
vim /etc/sysctl.conf # 永久生效
#修改 vm.swappiness 的修改为 0
vm.swappiness=0
sysctl -p # 使配置生效
修改桥接流量配置
确保br_netfilter模块加载,加载: sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
检查6443端口是否开放
telnet 127.0.0.1 6443
安装docker
使用阿里云镜像
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
2、安装 kubelet / kubeadm / kubectl
使用阿里云的源:阿里云镜像
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
3、安装集群
使用 kubeadm 安装集群
3.1 配置master
在 server-01 上完成 【1、环境准备】 与 【2、安装 kubelet / kubeadm / kubectl】
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
pod-network-cidr: 指定pod网络的IP地址范围。如果设置,控制平面将为每个节点自动分配CIDRs。
安装成功后,终端会有如下输出,此输出后续有用:
然后执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行:
kubectl get pod -A
可以看到安装的pod
安装flannel网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
或者: kubectl apply -f kube-flannel.yml
检查健康状态:
kubectl get cs
查看pod状态:
kubectl get pod -A
类似:
3.2 在新服务器上配置节点【多台服务器建集群】
在节点服务器 server-02 上 完成【1、环境准备】 与 【2、安装 kubelet / kubeadm / kubectl】
然后加入master:
kubeadm join 172.17.162.106:6443 --token 2hs4xh.bjrrd4lhiumg6pvm \
--discovery-token-ca-cert-hash sha256:91caa23f616e0f2f810c6cc243aa551d2480700f7d1c4acf323f07fe748e8d60
172.17.162.106 位master (server-01) 的 ip
token与discovery-token-ca-cert-hash参数为 【配置master】中的控制台输出。
执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
之后也是 安装flannel网络插件。
然后可以在master上查看节点情况:
kubectl get nodes
然后在node上就可以安装pod,service
3.3 在master上配置节点【单台服务器建集群】
在默认情况下,出于安全原因,在master节点上不允许运行调度pod。在本例子中,为了方便部署可运行的单节点k8s集群,将关闭这个限制。
在master 上执行:
kubectl taint nodes --all node-role.kubernetes.io/master-
然后可以在master上查看节点情况:
kubectl get nodes
然后就可以在master上安装pod,service
4、测试nginx
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
执行:
kubectl apply -f nginx-deployment.yaml
然后查看pod状态
kubectl get pod -A
浏览器中访问:
http://nodeIP:30080
更多推荐
所有评论(0)