k8s环境搭建及配置
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 = 2e
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)