使用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
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Docker集群管理工具-Kubernetes1.10.6(k8s)四节点集群使用kubeadm部署流程(一)
- 干货|使用kubeadm部署kubernetes集群
- 使用kubeadm部署kubernetes集群实践
- Ubuntu 16.04使用kubeadm快速部署Kubernetes-v1.13.4集群
- 使用kubeadm部署kubernetes集群
- 使用kubeadm进行单master(single master)和高可用(HA)kubernetes集群部署
- kubeadm工具部署kubernetes集群
- 使用Kubeadm在CentOS7.2上部署Kubernetes集群
- 使用Kubeadm部署 Kubernetes 集群
- 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
- 使用kubeadm部署Kubernetes集群
- Docker集群管理工具 -- Kubernetes 部署&使用说明
- Kubernetes/3.使用Kubeadm部署k8s集群
- Hadoop建设工具Ambari的安装部署及完整使用(四)——Ambari使用之集群建立
- 使用kuberspay部署高可用kubernetes集群
- Kubernetes 上安装 EMQ X 系列文章之三 :使用 Helm 管理、部署 EMQ X 集群
- 使用acs-engine在Azure中国区部署kubernetes集群详解
- 再探使用kubeadm部署高可用的k8s集群-01引言