您的位置:首页 > 其它

使用kubeadm部署工具部署kubernetes集群

2020-03-09 22:49 281 查看

此方法可通过kubeadm.yaml文件中的kubernetesVersion选项修改安装的k8s集群版本,可手动选择要安装的docker版本

系统版本

CentOS Linux release 7.6.1810 (Core)

内核版本

3.10.0-957.1.3.el7.x86_64

主机配置

三台主机均为虚拟机(虚拟化环境VMware VSphere6.0):
CPU:8核 内存:8G 磁盘:100G

部署架构

etcd:10.0.10.63  #使用kubeadm自动部署ETCD
kubernetes集群:
master:10.0.10.63
node1:10.0.10.64
node2:10.0.10.65

时间同步

ntpdate ntp.aliyun.com

关闭selinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config ; cat /etc/selinux/config | grep disabled
setenforce 0

关闭防火墙和NetworkManager

systemctl stop firewalld NetworkManager ; systemctl disable firewalld NetworkManager

关闭swap分区

swapoff -a
mv /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
echo "vm.swappiness = 0">> /etc/sysctl.conf

配置HOST

10.0.10.63 k8s-master
10.0.10.64 k8s-node1
10.0.10.65 k8s-node2

修改主机名

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

修改内核参数

vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

使修改生效

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

proxy开启ipvs模式(可选)

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

安装ipvs管理工具(可选)

yum install -y ipset ipvsadm

安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

查看docker版本

yum list docker-ce --showduplicates

选择合适版本安装

yum install -y docker-ce-18.09.9-3.el7
systemctl enable docker.service
systemctl start docker

修改/etc/docker/daemon.json

使用网易的docker镜像源

vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker并验证配置

systemctl restart docker
docker info | grep Cgroup

添加kubernetes源

使用阿里云yum源

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

安装kubeadm

yum makecache fast
yum install -y kubelet kubeadm kubectl

创建集群初始化配置

kubeadm config print init-defaults

修改必要的配置参数

token
advertiseAddress
imageRepository
dnsDomain
serviceSubnet
podSubnet

修改后配置如下:

vim kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.0.10.63
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8s-master
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.15.0
networking:
dnsDomain: domain.local
serviceSubnet: 172.16.0.0/12
podSubnet: 1.0.0.0/8
scheduler: {}

创建master节点

kubeadm init --config kubeadm.yaml

创建kubectl配置文件(创建master节点后生成,在集群中永久有效,需妥善保存)

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

在其他node节点执行如下命令(创建master节点后生成,在集群中永久有效,需妥善保存)

kubeadm join 10.0.10.63:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:ebe505f8d355c6d13afd39ae8057a97e7e0f1b86f130cfe6a2288d676123b283

可使用以下命令重置集群

kubeadm reset

添加集群网络服务

1、下载flannel配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2、修改flannel的子网配置

net-conf.json: |
{
"Network": "1.0.0.0/8", #此处修改为podSubnet的子网配置
"Backend": {
"Type": "vxlan"
}
}

3、创建flannel服务

kubectl apply -f kube-flannel.yml

查看集群状态

[root@k8s-master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}
[root@k8s-master ~]# kubectl get nodes -o wide
NAME         STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION              CONTAINER-RUNTIME
k8s-master   Ready    master   10d   v1.15.3   10.0.10.63    <none>        CentOS Linux 7 (Core)   3.10.0-957.1.3.el7.x86_64   docker://18.9.9
k8s-node1    Ready    <none>   10d   v1.15.3   10.0.10.64    <none>        CentOS Linux 7 (Core)   3.10.0-957.1.3.el7.x86_64   docker://18.9.9
k8s-node2    Ready    <none>   10d   v1.15.3   10.0.10.65    <none>        CentOS Linux 7 (Core)   3.10.0-957.1.3.el7.x86_64   docker://18.9.9
[root@k8s-master ~]# kubectl cluster-info
Kubernetes master is running at https://10.0.10.63:6443
KubeDNS is running at https://10.0.10.63:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
[root@k8s-master ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE     IP           NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-bccdc95cf-6dqhb                 1/1     Running   0          10d     1.0.0.10     k8s-master   <none>           <none>
kube-system   coredns-bccdc95cf-th9tb                 1/1     Running   0          10d     1.0.0.11     k8s-master   <none>           <none>
kube-system   etcd-k8s-master                         1/1     Running   0          10d     10.0.10.63   k8s-master   <none>           <none>
kube-system   kube-apiserver-k8s-master               1/1     Running   0          10d     10.0.10.63   k8s-master   <none>           <none>
kube-system   kube-controller-manager-k8s-master      1/1     Running   0          10d     10.0.10.63   k8s-master   <none>           <none>
kube-system   kube-flannel-ds-amd64-nrhkr             1/1     Running   0          10d     10.0.10.64   k8s-node1    <none>           <none>
kube-system   kube-flannel-ds-amd64-rf8vs             1/1     Running   0          10d     10.0.10.65   k8s-node2    <none>           <none>
kube-system   kube-flannel-ds-amd64-s7szj             1/1     Running   0          10d     10.0.10.63   k8s-master   <none>           <none>
kube-system   kube-proxy-9f57c                        1/1     Running   0          9d      10.0.10.63   k8s-master   <none>           <none>
kube-system   kube-proxy-f8cwg                        1/1     Running   0          10d     10.0.10.64   k8s-node1    <none>           <none>
kube-system   kube-proxy-qkctn                        1/1     Running   0          9d      10.0.10.65   k8s-node2    <none>           <none>
kube-system   kube-scheduler-k8s-master               1/1     Running   0          10d     10.0.10.63   k8s-master   <none>           <none>

**

如有人知道kubeadm怎样使用外部ETCD集群请留言给我,谢谢。

**

参考链接

https://v1-15.docs.kubernetes.io/zh/docs/
https://blog.frognew.com/2019/07/kubeadm-install-kubernetes-1.15.html
https://www.cnblogs.com/hongdada/p/11250293.html
https://ieevee.com/tech/2016/09/28/docker-mirror.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
断尘丶轻舞 发布了3 篇原创文章 · 获赞 0 · 访问量 96 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: