フランス語学習を始めました

4月中旬あたりから少しずつフランス語の学習をはじめています。 3日坊主とならずに少しずつ前に進んでいる状況です。 英語をもっと深堀し流暢に話せた方が良いと思うのですが、少し気分を変えたいという気持ちもあり新しくフランス語にチャレンジしています。

英語と同様にフランス語もアルファベットがあり、そこから取り組み始めたのですが同じ文字でも英語と発音が異なるものがあり、未だに混乱することがあります。 特にJとGの発音がパッとできない…

そして綴り字というものもあり、これから発音やこれらが意味することをきちんと覚えたいと思っています。

É, é
À,Ù, à, ù
Â, Î, Ô, Û, â, î, ô, û
Ç, ç
Ä, Ë, Ï, Ö, Ü, Ÿ, ä, ë, ï, ö, ü, ÿ


使っている参考書はネットでも評判が良かった「フラ語入門、わかりやすいにもホドがある! [改訂新版]《CD付》」です。 図書館で何冊か参考書を借りてきて比較し、読みやすかったので購入しました。




また、「CDレッスン 驚くほど身につくフランス語」という参考書も使っています。これは以前フランス語をやろうと思ったものの3日坊主となった際の参考書です。 こちらもフラ語入門の方に書いていないことがあったりするので、比較しながら読み進めています。




学生時代とは異なり、Youtubeに様々なフランス語コンテンツがありアプリなども充実しているのでフランス語学習のハードルはかなり下がっていますね。

ということで、日常会話くらいまでできるようになってフランス旅行に行ってみたいと思う今日この頃です。


Minikube Multi-Node Clusters

f:id:tworks55:20220312110804p:plain

Minikubeを何のオプションも設定せずに起動するとシングルクラスターとして環境が構築されます。

tworks55@LAPTOP-A1R0H57F:~$ kubectl get node
NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   10d   v1.23.3


複数ノードを使って動作確認をしたい場合もあると思いますので、今回は複数ノードでminikubeを作り直します。

複数ノードでminikubeを起動

既にノードが作成されている場合は、起動オプションでノード数を設定しても無視されます。


The cluster minikube already exists which means the --nodes parameter will be ignored. Use "minikube node add" to add nodes to an existing cluster.


tworks55@LAPTOP-A1R0H57F:~$ minikube start --nodes 3
😄  minikube v1.25.2 on Ubuntu 20.04
✨  Using the docker driver based on existing profile
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔄  Restarting existing docker container for "minikube" ...
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
    ▪ Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
    ▪ Using image kubernetesui/dashboard:v2.3.1
    ▪ Using image kubernetesui/metrics-scraper:v1.0.7
🌟  Enabled addons: storage-provisioner, default-storageclass, metrics-server, dashboard
❗  The cluster minikube already exists which means the --nodes parameter will be ignored. Use "minikube node add" to add nodes to an existing cluster.
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
続きを読む

WSL2 Error response from daemon: Get "https://registry-1.docker.io/v2/"

f:id:tworks55:20220315082952p:plain

WSL2上のminikubeでいろいろ試していたところ、知らない間にpodがimage取得に失敗するようになっていました。発生していたエラーは以下になります。

Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.49.1:53: read udp 192.168.49.2:41517->192.168.49.1:53: i/o timeout


こちらを参考に/etc/resolv.confの情報を8.8.8.8に変更し、dockerとminikubeを再起動し解決しました。


しかし、WSLは/etc/resolv.confを自動で生成する仕組みになっているようで、WSL2を再起動すると8.8.8.8に設定したファイルが上書きされ別のIPアドレスに変わっています。

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.17.224.1


/etc/resolv.confを再生成しないようにするには /etc/wsl.confに以下2行を追加せよとのこと。

[network]
generateResolvConf = false


WSLは便利ですが少し癖がありますね。

Kubernetes resource short name

f:id:tworks55:20220312110804p:plain

Kubernetesを触り始めるとkubectlコマンドを多用しますが、リソース名が長くてタイプが面倒になってきます。

その際にリソース名の略称を知っていると少し便利です。どのリソースが省略名を持っているかは以下のコマンドで確認できます。

kubectl api-resources



先日作成したminikube環境で確認すると以下のようになります。

tworks55@LAPTOP-A1R0H57F:~/k8s$ kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
validatingwebhookconfigurations                admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
customresourcedefinitions         crd,crds     apiextensions.k8s.io/v1                false        CustomResourceDefinition
apiservices                                    apiregistration.k8s.io/v1              false        APIService
controllerrevisions                            apps/v1                                true         ControllerRevision
daemonsets                        ds           apps/v1                                true         DaemonSet
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
statefulsets                      sts          apps/v1                                true         StatefulSet
tokenreviews                                   authentication.k8s.io/v1               false        TokenReview
localsubjectaccessreviews                      authorization.k8s.io/v1                true         LocalSubjectAccessReview
selfsubjectaccessreviews                       authorization.k8s.io/v1                false        SelfSubjectAccessReview
selfsubjectrulesreviews                        authorization.k8s.io/v1                false        SelfSubjectRulesReview
subjectaccessreviews                           authorization.k8s.io/v1                false        SubjectAccessReview
horizontalpodautoscalers          hpa          autoscaling/v2                         true         HorizontalPodAutoscaler
cronjobs                          cj           batch/v1                               true         CronJob
jobs                                           batch/v1                               true         Job
certificatesigningrequests        csr          certificates.k8s.io/v1                 false        CertificateSigningRequest
leases                                         coordination.k8s.io/v1                 true         Lease
endpointslices                                 discovery.k8s.io/v1                    true         EndpointSlice
events                            ev           events.k8s.io/v1                       true         Event
flowschemas                                    flowcontrol.apiserver.k8s.io/v1beta2   false        FlowSchema
prioritylevelconfigurations                    flowcontrol.apiserver.k8s.io/v1beta2   false        PriorityLevelConfiguration
nodes                                          metrics.k8s.io/v1beta1                 false        NodeMetrics
pods                                           metrics.k8s.io/v1beta1                 true         PodMetrics
ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
ingresses                         ing          networking.k8s.io/v1                   true         Ingress
networkpolicies                   netpol       networking.k8s.io/v1                   true         NetworkPolicy
runtimeclasses                                 node.k8s.io/v1                         false        RuntimeClass
poddisruptionbudgets              pdb          policy/v1                              true         PodDisruptionBudget
podsecuritypolicies               psp          policy/v1beta1                         false        PodSecurityPolicy
clusterrolebindings                            rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
clusterroles                                   rbac.authorization.k8s.io/v1           false        ClusterRole
rolebindings                                   rbac.authorization.k8s.io/v1           true         RoleBinding
roles                                          rbac.authorization.k8s.io/v1           true         Role
priorityclasses                   pc           scheduling.k8s.io/v1                   false        PriorityClass
csidrivers                                     storage.k8s.io/v1                      false        CSIDriver
csinodes                                       storage.k8s.io/v1                      false        CSINode
csistoragecapacities                           storage.k8s.io/v1beta1                 true         CSIStorageCapacity
storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
volumeattachments                              storage.k8s.io/v1                      false        VolumeAttachment
続きを読む

WSL2 (Ubuntu-20.04)にminikubeをインストール

f:id:tworks55:20220306174833p:plain

minikubeをインストール

バイナリをダウンロードしてインストールします。

インストール手順はこちらに記載されています。

tworks55@LAPTOP-A1R0H57F:~/k8s$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 69.2M  100 69.2M    0     0  6601k      0  0:00:10  0:00:10 --:--:-- 7297k
tworks55@LAPTOP-A1R0H57F:~/k8s$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikubeを起動

minikubeを起動します。

tworks55@LAPTOP-A1R0H57F:~/k8s$ minikube start
😄  minikube v1.25.2 on Ubuntu 20.04
✨  Automatically selected the docker driver. Other choices: none, ssh
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.23.3 preload ...
    > preloaded-images-k8s-v17-v1...: 505.68 MiB / 505.68 MiB  100.00% 4.30 MiB
    > gcr.io/k8s-minikube/kicbase: 379.06 MiB / 379.06 MiB  100.00% 2.80 MiB p/
🔥  Creating docker container (CPUs=2, Memory=3100MB) ...
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
続きを読む