使用kubeadmin部署k8s集群(安装kubeadmin1.15.0)

安装kubeadmin1.15.0

一:整体架构

在这里插入图片描述

  • kubeadm:可以把kubeadmin看成一个部署工具,它简化K8s的部署过程。

二:准备工作(master、node1、node2执行)

  • 检查master、node1、node2是否能上外网 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
  • 关闭SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
getenforce
  • 禁用Swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
  • 配置主机ip映射及主机名
cat <<EOF >> /etc/hosts
192.168.181.140 gkh140.com master
192.168.181.138 gkh138.com node1
192.168.181.139 gkh139.com node2
EOF
cat /etc/hosts
reboot
  • 安装docker
yum -y install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
  • 配置Docker的镜像加速器
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
	"registry-mirrors": ["https://registry.docker-cn.com","https://51lfh9e0.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
  • 配置阿里云的Kubernetes源
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
  • 配置内核参数,将桥接的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
  • systemd驱动
vim /usr/lib/systemd/system/docker.service
#修改为systemd
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd
systemctl daemon-reload
systemctl restart docker
  • 所有节点安装kubeadm,kubelet和kubectl。(指定版本安装,不指定默认最新版本安装;)
yum install -y kubeadm-1.15.0-0 kubectl-1.15.0-0 kubelet-1.15.0-0
systemctl enable kubelet

三:初始化(master执行)

kubeadm config images list
kubeadm init --apiserver-advertise-address=192.168.181.142 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
  • –image-repository
    string:这个用于指定从什么位置来拉取镜像(1.13版本才有的),默认值是k8s.gcr.io,我们将其指定为国内镜像地址:registry.aliyuncs.com/google_containers
    最后生成的命令记录下来,后边使用kubeadm join往集群中添加节点时会用到;
    kubeadm join 192.168.181.140:6443 --token qd3apb.ly13dx5944yxhykw --discovery-token-ca-cert-hash sha256:71de75d66c44eb49c4a330714df6183ec3eb46d1952bc951474724eb44aef0d5
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
  • 由于未安装flannel,此时是NotReady状态

在这里插入图片描述

四:安装flannel(master执行)

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 1.没有翻墙有可能安装失败,kubectl get pod -n kube-system查看容器安装进度。
    2.docker images 查看是否下载完镜像。
    3.也可以下载flannel.yml要求的容器,手动导入master节点内。等待几分钟便安装成功。
    4.个人建议是拉取对应镜像放到master节点后,在执行kubectl apply -f kube-flannel.yml。
    5.如果node节点还是notready,手动将flannel镜像上传至node节点容器镜像仓库内,即可变为ready 。
    6.这里由于网络问题,无法下载到镜像,我是选择将flannel镜像手动上传至容器镜像仓库内。(针对所有节点都是手动上传flannel镜像)

在这里插入图片描述

docker load < flannel.tar
kubectl apply -f kube-flannel.yml
kubectl get pod -n kube-system
kubectl get nodes

五:加入node1、node2节点(node1、node2节点运行)

  • 安装flannel
  • 手动将flannel镜像上传至node节点容器镜像仓库内
docker load < flannel.tar
kubeadm join 192.168.181.140:6443 --token qd3apb.ly13dx5944yxhykw --discovery-token-ca-cert-hash sha256:71de75d66c44eb49c4a330714df6183ec3eb46d1952bc951474724eb44aef0d5

六:常用命令

  • 重置集群节点命令
kubeadm reset
  • 查询join命令
kubeadm token create --print-join-command
  • 在Mater节点执行命令查看集群的状态信息
kubectl get nodes
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes中的DNS(Domain Name System)是用于解析服务名称到其对应的网络地址的核心组件。在Kubernetes集群部署和配置DNS非常简单。 首先,确保Kubernetes集群已经成功部署并且kubectl命令可用。接下来,按照以下步骤进行DNS的配置和部署: 1. 创建kube-dns的YAML文件 通过创建一个名为kube-dns.yaml的YAML文件来定义kube-dns的Deployment和Service。在该文件中,需要指定kube-dns镜像的名称和版本,以及相关的部署和服务配置。示例kube-dns.yaml内容如下: ``` apiVersion: apps/v1 kind: Deployment metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns spec: selector: matchLabels: k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns spec: containers: - name: kube-dns image: k8s.gcr.io/k8s-dns-kube-dns:1.15.0 # 更多配置 --- apiVersion: v1 kind: Service metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/cluster-service: "true" kubernetes.io/name: "KubeDNS" spec: selector: k8s-app: kube-dns clusterIP: 10.96.0.10 ports: - name: dns port: 53 protocol: UDP ``` 2. 创建kube-dns对象 运行以下命令来创建kube-dns Deployment和Service: ``` kubectl create -f kube-dns.yaml ``` 3. 验证DNS是否正常工作 运行以下命令来验证DNS是否部署成功: ``` kubectl get pods --all-namespaces -l k8s-app=kube-dns ``` 如果看到kube-dns的Pod以Running状态运行,则表示DNS已经正常部署。 现在,Kubernetes集群中的所有服务都可以通过它们的服务名称进行解析。例如,如果有一个名为my-service的服务,可以使用my-service作为域名来访问它。 这就是在Kubernetes中配置和部署DNS的过程。DNS是Kubernetes中非常重要的一个组件,确保了服务之间的通信和发现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值