k8s安装手记

官方文档:https://kubernetes.io/

1、前期准备

1.1关闭swap交换分区

1.2关闭防火墙

1.3关闭selinux

1.4做好ip解析

1.5装好docker并设置为开机自启动

curl -fsSL https://get.docker.com/ | sh

1.6、修改docker Cgroup

vim /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

2、安装 kubeadm、kubelet 和 kubectl(每一台机器

cat <

3、部署master

kubeadm init --apiserver-advertise-address=10.14.21.188  --pod-network-cidr=10.14.0.0/16
#非root用户启动
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#root用户启功
export KUBECONFIG=/etc/kubernetes/admin.conf
#node执行
kubeadm join 10.14.23.109:6443 --token 5elpv0.e01c2qje36v8ersz \
    --discovery-token-ca-cert-hash sha256:edec59a625315804ad79c7235c7c88d400f391bcc0e843194127db841cd8f440

4、将桥接的ipv4流量传递到iptables

cat /etc/sysctl.d/k8s.conf #自己创建

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

sysctl --system

5、master安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#kubectl自动补全

#1:安装bash-completion:
yum install -y bash-completion 
source /usr/share/bash-completion/bash_completion
#2:应用kubectl的completion到系统环境:
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

k8s 操作label

kubectl label nodes node_name node-role.kubernetes.io/work=worker 
kubectl label nodes node-1 node-role.kubernetes.io/work=node-1
#worker 是你为节点做的标记

#删除一个Label,只需在命令行最后指定Label的key名并与一个减号相连即可
kubectl label nodes node-role.kubernetes.io/worker-

#增加方法的基础上 使用--overwrite 参数
kubectl label nodes node_name node-role.kubernetes.io/worker=test --overwrite
#或者直接修改配置
kubect edit nodes nodename

1、network: open /run/flannel/subnet.env: no such file or directory

没有就添加文件,在每一个节点上
[root@master ~]# cat /run/flannel/subnet.env 
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.14.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

k8s启动nginx-pod示例

vim nginx.yaml
apiVersion: apps/v1      #指定api版本标签
kind: Deployment            #定义资源的类型/角色,deployment为控制器
metadata:                  #定义资源的元数据信息
  name: nginx-test        #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:                 #定义资源标签
    app: nginx
spec:
  replicas: 3          #定义副本数量
  selector:                #定义选择器
    matchLabels:           #匹配上面的标签
      app: nginx           #匹配模板名称
  template:                #定义模板
    metadata:
      labels:
        app: nginx
    spec:
      containers:                #定义容器信息
      - name: nginx                  #容器名,与标签名要相同
        image: nginx:1.15.4      #容器使用的镜像以及版本
        ports:
        - containerPort: 80         #定义容器的对外端口
      nodeSelector:             #定义节点标签信息,指明容器启动节点
       node: node-1
#kubelet apply -f nginx.yaml

你可能感兴趣的:(k8s安装手记)