k8s环境搭建及配置

tech2023-02-18  112

1.创建Vagrant主机

在Vagrantfile文件中,添加以下内容:

Vagrant.configure("2") do |config| config.vm.define "k8s-01" do |master| master.vm.box = "centos7" master.vm.provider "virtualbox" do |vb| vb.memory = "2048" vb.cpus = 2 end master.vm.network "public_network", ip: "192.168.8.110" master.ssh.insert_key = false master.vm.hostname = "master" end config.vm.define "k8s-02" do |node1| node1.vm.box = "centos7" node1.vm.network "public_network", ip: "192.168.8.111" node1.ssh.insert_key = false node1.vm.hostname = "node1" end config.vm.define "k8s-03" do |node2| node2.vm.box = "centos7" node2.vm.network "public_network", ip: "192.168.8.112" node2.ssh.insert_key = false node2.vm.hostname = "node2" end end

2.修改主机名

在/etc的hosts文件中,添加:

192.168.8.110 master 192.168.8.111 node1 192.168.8.112 node2

3.开启ssh连接

由于vagrant默认无密码密钥验证连接,为了便于管理,建议开启ssh开启密码连接,修改/etc/ssh/sshd_config文件,开启密码验证(记得使用passwd修改密码) 将PasswordAuthentication改为yes, ChallengeResponseAuthentication也改为yes 重启sshd服务,在/bin目录下输入systemctl restart sshd.service 重新打开putty就可以登陆成功

4.关闭防火墙

iptables -F systemctl stop firewalld systemctl disable firewalld

在/etc/selinux/下的config文件中:

# 关闭selinux(关闭后重启生效) vim /etc/selinux/config # 修改SELINUX=enforcing选项为disabled SELINUX=disabled #开启临时关闭selinux setenforce 0

在命令行中输入modprobe br_netfilter ,使修改生效

# 禁止iptables对bridge数据进行处理(kubeadm初始化时会检测该选项) ## 开启内核模块 modprobe br_netfilter

在/etc/sysctl.d/下,新建文件k8s.conf

## 写入配置参数 vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1

保存并退出

## 立即生效 sysctl -p /etc/sysctl.d/k8s.conf

5.关闭swapoff

# 临时关闭 swapoff -a

6.安装k8s组件

如果系统中的yum命令不能用,先安装,详见https://blog.csdn.net/lisongyue123/article/details/108325374

# 移除旧版本docker sudo yum remove docker docker-common docker-selinux docker-engine # 安装一些依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 wget # 下载发行版repo文件 sudo wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

添加kube组件仓库源:

# 添加kube组件仓库源 vi /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 # 刷新索引缓存 sudo yum makecache fast # 安装软件 yum install -y docker-ce-18.09.9 kubelet kubeadm kubectl # 启动并自启动 systemctl start docker systemctl enable docker systemctl start kubelet systemctl enable kubelet

注意:上述步骤master和node节点均需操作

7.集群安装配置

7.1主节点配置(master)

(1)初始化kubeadm 在master节点配置,初始化kubeadm:

kubeadm init --apiserver-advertise-address=192.168.8.110 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --pod-network-cidr=10.244.0.0/16

注意:如果初始化失败,使用kubeadm reset 进行重置。 成功后会生成一串信息,类似kubeadm join --token {token} {master-ip}:6443 --discovery-token-ca-cert-hash sha256:{hash-code} 建议保存。 若无法找到该信息,请看下面的操作: –apiserver-advertise-address 指定api地址,一般为master节点 –image-repository 指定镜像仓库 –kubernetes-version 指定k8s版本(截至当前为1.16.0) –pod-network-cidr 指定flannel网络(默认不要改)

(2)配置kubeconfig

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

(3)安装网络插件flannel 注意: 安装该插件会请求quay.io的镜像,请确保可以正常访问

# 先下载配置好后部署[建议使用此] wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 部署 kubectl apply -f kube-flannel.yml

注,如果失败,参考以下:

# 直接部署(可能由于网络原因导致镜像拉取 失败) kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ## 若你发现部署后coredns的pod无法Running,主谋可能就是flannel节点拉取失败,请使用如下方式 ## 镜像地址: quay.io/coreos/flannel 截至[19.11.17]最新版本为0.11.0.* ## 先删除上次部署(删除前最好看看pod事件,查看无法启动原因) kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ## 拉取镜像(参考底部参考链接,从其他可用仓库拉取镜像) ## 模板: docker pull quay.azk8s.cn/xxx/yyy:zzz ## 其他针对quay.io的可用仓库: quay.mirrors.ustc.edu.cn quay-mirror.qiniu.com ## 示例操作如下: docker pull quay.azk8s.cn/coreos/flannel:v0.11.0-amd64 ## 根据上一步将缺失的镜像拉取后,修改tag 其实就是将仓库名称改回来 docker tag quay.azk8s.cn/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64 # 将缺失的镜像全部拉取下来后 再次部署 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

7.2从节点配置(node) 在主节点中查看token并配置: (1)关于token(参考https://www.cnblogs.com/ITPower/p/12866713.html): 查看token状态:

kubeadm token list

重新生产token:

kubeadm token create

vrpnaf.3fzxslguao3d7y3i为新产生的token 获取–discovery-token-ca-cert-hash值: 框中的为获取的hash-code (2)添加从节点

kubeadm join --token {token} {master-ip}:6443 --discovery-token-ca-cert-hash sha256:{hash-code}

说明 token: 可在主节点中通过kubeadm token list查看可用token列表,例如上图中的elpzcv.poneqolvd6loiozi 使用 kubeadm token create 创建一个新的(token过期时使用) master-ip: 填写主节点的ip地址 hash-code: 使用以下命令生成: openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’ 上图错误,按照下图:

8.测试

(1)创建Deployment

# 创建nginx配置文件 vim nginx-deployment.yaml # 文件内容 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 tolerations: - key: "node-role.kubernetes.io/master" operator: "Equal" value: "" effect: "NoSchedule"

(2)部署

# 部署 kubectl apply -f nginx-deployment.yaml

(3)查看deployment信息

# 查看所有节点信息 [root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-59c9f8dff-4n258 1/1 Running 0 20m nginx-deployment-59c9f8dff-528g8 1/1 Running 0 20m # 查看更详细的节点信息 [root@master ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-59c9f8dff-4n258 1/1 Running 0 21m 10.244.2.2 node2 <none> <none> nginx-deployment-59c9f8dff-528g8 1/1 Running 0 21m 10.244.1.2 node1 <none> <none>

改为: 查看集群信息:

最新回复(0)