共计 6874 个字符,预计需要花费 18 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 kubernetes 高可用集群版如何安装,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
前置条件
系统要求:64 位 centos7.6
关闭防火墙和 selinux
关闭操作系统 swap 分区 (使用 k8s 不推荐打开)
请预配置好每个节点的 hostname 保证不重名即可
请配置第一个 master 能秘钥免密登入所有节点 (包括自身)
环境说明
本手册安装方式适用于小规模使用
多主模式 (最少三个), 每个 master 节点上需要安装 keepalived
准备工作 (每个节点都需要执行)Docker 和 kubernetes 软件源配置
# 切换到配置目录
cd /etc/yum.repos.d/
# 配置 docker-ce 阿里源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置 kubernetes 阿里源
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
配置内核相关参数
cat EOF /etc/sysctl.d/ceph.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system
安装相应软件包
# 安装 kubeadm kubelet kubectl
yum install kubeadm kubectl kubelet -y
# 开机启动 kubelet 和 docker
systemctl enable docker kubelet
# 启动 docker
systemctl start docker
部署安装 keepalived(在所有 master 上执行)
# 此处如果有 Lb 可省略 直接使用 LB 地址
# 安装时候请先在初始化 master 上执行, 保证 VIP 附着在初始化 master 上, 否则请关闭其他 keepalived
# 安装完成后可根据自己业务需要实现健康监测
yum install keepalived -y
# 备份 keepalived 原始文件
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
# 生成新的 keepalived 配置文件, 文中注释部分对每台 master 请进行修改
cat EOF /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id k8s-master1 # 主调度器的主机名
vrrp_mcast_group4 224.26.1.1
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 66
nopreempt
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.20.1.8 #VIP 地址声明
}
# 配置 keepalived 开机启动和启动 keepalived
systemctl enable keepalived
systemctl start keepalived
生成 kubeadm master 配置文件
cd cat EOF kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
apiServer:
certSANs:
- 172.29.2.188 # 请求改为你的 vip 地址
controlPlaneEndpoint: 172.29.2.188:6443 # 请求改为你的 vip 地址
imageRepository: registry.cn-hangzhou.aliyuncs.com/peter1009
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
EOF
初始化第一个 master
# 使用上一步生成的 kubeadm.yaml
kubeadm init --config kubeadm.yaml
# 执行完上一步输出如下
root@k8s4:~# kubeadm init --config kubeadm.yaml
I0522 06:20:13.352644 2622 version.go:96] could not fetch a Kubernetes version from
......... 此处省略
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/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join 172.16.10.114:6443 --token v2lv3k.aysjlmg3ylcl3498 \
--discovery-token-ca-cert-hash sha256:87b69e590e9d59055c5a9c6651e333044c402dba877beb29906eddfeb0998d72 \
--experimental-control-plane
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.16.10.114:6443 --token v2lv3k.aysjlmg3ylcl3498 \
--discovery-token-ca-cert-hash sha256:87b69e590e9d59055c5a9c6651e333044c402dba877beb29906eddfeb0998d72
安装集群
cat EOF copy.sh
CONTROL_PLANE_IPS= 172.16.10.101 172.16.10.102 # 修改这两个 ip 地址为你第二 / 第三 masterip 地址
for host in ${CONTROL_PLANE_IPS}; do
ssh $host mkdir -p /etc/kubernetes/pki/etcd
scp /etc/kubernetes/pki/ca.crt ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/ca.key ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.key ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.pub ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.crt ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.key ${USER} @$host:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/etcd/ca.crt ${USER} @$host:/etc/kubernetes/pki/etcd/ca.crt
scp /etc/kubernetes/pki/etcd/ca.key ${USER} @$host:/etc/kubernetes/pki/etcd/ca.key
scp /etc/kubernetes/admin.conf ${USER} @$host:/etc/kubernetes/
# 如果未配置免密登录, 该步骤讲失败
bash -x copy.sh
# 在当前节点执行提示内容, 使 kubectl 能访问集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 在其他 master 节点上配置执行提示内容 (必须要 copy.sh 文件执行成功以后)
kubeadm join 172.16.10.114:6443 --token v2lv3k.aysjlmg3ylcl3498 \
--discovery-token-ca-cert-hash sha256:87b69e590e9d59055c5a9c6651e333044c402dba877beb29906eddfeb0998d72 \
--experimental-control-plane
# 在其他非 master 的节点上配置执行提示内容
kubeadm join 172.16.10.114:6443 --token v2lv3k.aysjlmg3ylcl3498 \
--discovery-token-ca-cert-hash sha256:87b69e590e9d59055c5a9c6651e333044c402dba877beb29906eddfeb0998d72
安装 flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
检查是否安装完成
root@k8s4:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s4 Ready master 20m v1.14.2
root@k8s4:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s4 Ready master 20m v1.14.2
root@k8s4:~# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-8cc96f57d-cfr4j 1/1 Running 0 20m
kube-system coredns-8cc96f57d-stcz6 1/1 Running 0 20m
kube-system etcd-k8s4 1/1 Running 0 19m
kube-system kube-apiserver-k8s4 1/1 Running 0 19m
kube-system kube-controller-manager-k8s4 1/1 Running 0 19m
kube-system kube-flannel-ds-amd64-k4q6q 1/1 Running 0 50s
kube-system kube-proxy-lhjsf 1/1 Running 0 20m
kube-system kube-scheduler-k8s4 1/1 Running 0 19m
测试是否能正常使用集群
# 取消节点污点, 使 master 能被正常调度, k8s4 请更改为你自有集群的 nodename
kubectl taint node k8s4 node-role.kubernetes.io/master:NoSchedule-
# 创建 nginx deploy
root@k8s4:~# kubectl create deploy nginx --image nginx
deployment.apps/nginx created
root@k8s4:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-65f88748fd-9sk6z 1/1 Running 0 2m44s
# 暴露 nginx 到集群外
root@k8s4:~# kubectl expose deploy nginx --port=80 --type=NodePort
service/nginx exposed
root@k8s4:~# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 none 443/TCP 25m
nginx NodePort 10.104.109.234 none 80:32129/TCP 5s
root@k8s4:~# curl 127.0.0.1:32129
!DOCTYPE html
html
head
title Welcome to nginx! /title
style
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
/style
/head
body
h2 Welcome to nginx! /h2
p If you see this page, the nginx web server is successfully installed and
working. Further configuration is required. /p
p For online documentation and support please refer to
a href= http://nginx.org/ nginx.org /a . br/
Commercial support is available at
a href= http://nginx.com/ nginx.com /a . /p
p em Thank you for using nginx. /em /p
/body
/html
关于“kubernetes 高可用集群版如何安装”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
正文完